@probelabs/visor 0.1.127 → 0.1.129

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 (255) hide show
  1. package/README.md +31 -1
  2. package/defaults/.visor.yaml +420 -0
  3. package/dist/ai-review-service.d.ts +1 -0
  4. package/dist/ai-review-service.d.ts.map +1 -1
  5. package/dist/cli-main.d.ts.map +1 -1
  6. package/dist/config.d.ts +4 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/daemon.js +19 -0
  9. package/dist/defaults/.visor.yaml +420 -0
  10. package/dist/docs/commands.md +1 -1
  11. package/dist/docs/debugging.md +133 -0
  12. package/dist/docs/dev-playbook.md +10 -0
  13. package/dist/docs/index.md +1 -0
  14. package/dist/docs/scheduler.md +503 -0
  15. package/dist/docs/slack-integration.md +21 -0
  16. package/dist/docs/timeouts.md +1 -1
  17. package/dist/docs/workflow-creation-guide.md +39 -0
  18. package/dist/examples/README.md +30 -0
  19. package/dist/examples/calculator-config.yaml +4 -4
  20. package/dist/examples/sandbox-basic.yaml +18 -0
  21. package/dist/examples/sandbox-cache.yaml +32 -0
  22. package/dist/examples/sandbox-dockerfile-inline.yaml +22 -0
  23. package/dist/examples/sandbox-env-passthrough.yaml +26 -0
  24. package/dist/examples/sandbox-multi-env.yaml +27 -0
  25. package/dist/examples/sandbox-read-only.yaml +33 -0
  26. package/dist/examples/scheduler-example.yaml +118 -0
  27. package/dist/frontends/host.d.ts.map +1 -1
  28. package/dist/frontends/slack-frontend.d.ts.map +1 -1
  29. package/dist/generated/config-schema.d.ts +230 -9
  30. package/dist/generated/config-schema.d.ts.map +1 -1
  31. package/dist/index.js +13676 -1604
  32. package/dist/mcp-server.d.ts +8 -8
  33. package/dist/{traces/run-2026-02-01T09-59-08-165Z.ndjson → output/traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
  34. package/dist/{traces/run-2026-02-01T09-59-52-595Z.ndjson → output/traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
  35. package/dist/providers/ai-check-provider.d.ts +16 -0
  36. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  37. package/dist/providers/check-provider.interface.d.ts +5 -0
  38. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  39. package/dist/providers/command-check-provider.d.ts.map +1 -1
  40. package/dist/providers/log-check-provider.d.ts.map +1 -1
  41. package/dist/providers/mcp-check-provider.d.ts +3 -0
  42. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  43. package/dist/providers/mcp-custom-sse-server.d.ts +22 -2
  44. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  45. package/dist/providers/workflow-check-provider.d.ts.map +1 -1
  46. package/dist/providers/workflow-tool-executor.d.ts +2 -0
  47. package/dist/providers/workflow-tool-executor.d.ts.map +1 -1
  48. package/dist/sandbox/cache-volume-manager.d.ts +48 -0
  49. package/dist/sandbox/cache-volume-manager.d.ts.map +1 -0
  50. package/dist/sandbox/check-runner.d.ts +25 -0
  51. package/dist/sandbox/check-runner.d.ts.map +1 -0
  52. package/dist/sandbox/docker-compose-sandbox.d.ts +25 -0
  53. package/dist/sandbox/docker-compose-sandbox.d.ts.map +1 -0
  54. package/dist/sandbox/docker-image-sandbox.d.ts +32 -0
  55. package/dist/sandbox/docker-image-sandbox.d.ts.map +1 -0
  56. package/dist/sandbox/env-filter.d.ts +19 -0
  57. package/dist/sandbox/env-filter.d.ts.map +1 -0
  58. package/dist/sandbox/index.d.ts +9 -0
  59. package/dist/sandbox/index.d.ts.map +1 -0
  60. package/dist/sandbox/sandbox-manager.d.ts +39 -0
  61. package/dist/sandbox/sandbox-manager.d.ts.map +1 -0
  62. package/dist/sandbox/sandbox-telemetry.d.ts +9 -0
  63. package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -0
  64. package/dist/sandbox/trace-ingester.d.ts +19 -0
  65. package/dist/sandbox/trace-ingester.d.ts.map +1 -0
  66. package/dist/sandbox/types.d.ts +149 -0
  67. package/dist/sandbox/types.d.ts.map +1 -0
  68. package/dist/scheduler/cli-handler.d.ts +6 -0
  69. package/dist/scheduler/cli-handler.d.ts.map +1 -0
  70. package/dist/scheduler/index.d.ts +14 -0
  71. package/dist/scheduler/index.d.ts.map +1 -0
  72. package/dist/scheduler/schedule-parser.d.ts +34 -0
  73. package/dist/scheduler/schedule-parser.d.ts.map +1 -0
  74. package/dist/scheduler/schedule-store.d.ts +182 -0
  75. package/dist/scheduler/schedule-store.d.ts.map +1 -0
  76. package/dist/scheduler/schedule-tool.d.ts +137 -0
  77. package/dist/scheduler/schedule-tool.d.ts.map +1 -0
  78. package/dist/scheduler/scheduler.d.ts +195 -0
  79. package/dist/scheduler/scheduler.d.ts.map +1 -0
  80. package/dist/sdk/check-provider-registry-ACRGIYOB.mjs +28 -0
  81. package/dist/sdk/check-provider-registry-VYHKFHK2.mjs +28 -0
  82. package/dist/sdk/{chunk-CNX7V5JK.mjs → chunk-25IC7KXZ.mjs} +2 -2
  83. package/dist/sdk/{chunk-IHZOSIF4.mjs → chunk-2KB35MB7.mjs} +3 -3
  84. package/dist/sdk/{chunk-HQL734ZI.mjs → chunk-6W75IMDC.mjs} +3 -3
  85. package/dist/sdk/{chunk-XWJPT5KQ.mjs → chunk-7YSOINAQ.mjs} +392 -18
  86. package/dist/sdk/chunk-7YSOINAQ.mjs.map +1 -0
  87. package/dist/sdk/{chunk-3OMWVM6J.mjs → chunk-B7BVQM5K.mjs} +2 -2
  88. package/dist/sdk/chunk-BDGUM6BA.mjs +38825 -0
  89. package/dist/sdk/chunk-BDGUM6BA.mjs.map +1 -0
  90. package/dist/sdk/{chunk-VW2GBXQT.mjs → chunk-D5KI4YQ4.mjs} +3 -3
  91. package/dist/sdk/chunk-DGZPPGJJ.mjs +38825 -0
  92. package/dist/sdk/chunk-DGZPPGJJ.mjs.map +1 -0
  93. package/dist/sdk/chunk-H5BOW5CR.mjs +91 -0
  94. package/dist/sdk/chunk-H5BOW5CR.mjs.map +1 -0
  95. package/dist/sdk/{chunk-YSN4G6CI.mjs → chunk-HEX3RL32.mjs} +81 -3
  96. package/dist/sdk/{chunk-YSN4G6CI.mjs.map → chunk-HEX3RL32.mjs.map} +1 -1
  97. package/dist/sdk/{chunk-ZYAUYXSW.mjs → chunk-J5RGJQ53.mjs} +14 -3
  98. package/dist/sdk/{chunk-ZYAUYXSW.mjs.map → chunk-J5RGJQ53.mjs.map} +1 -1
  99. package/dist/sdk/{chunk-WMJKH4XE.mjs → chunk-J7LXIPZS.mjs} +16 -1
  100. package/dist/sdk/{chunk-EXFGO4FX.mjs → chunk-KFKHU6CM.mjs} +2 -2
  101. package/dist/sdk/{chunk-MPS4HVQI.mjs → chunk-N7HO6KKC.mjs} +8 -8
  102. package/dist/sdk/{chunk-O5EZDNYL.mjs → chunk-NCWIZVOT.mjs} +2 -2
  103. package/dist/sdk/{chunk-3NMLT3YS.mjs → chunk-PO7X5XI7.mjs} +3 -3
  104. package/dist/sdk/{chunk-BHOKBQPB.mjs → chunk-R5Z7YWPB.mjs} +5 -5
  105. package/dist/sdk/{chunk-EORMDOZU.mjs → chunk-SGS2VMEL.mjs} +7 -7
  106. package/dist/sdk/{chunk-BOVFH3LI.mjs → chunk-VF6XIUE4.mjs} +21 -10
  107. package/dist/sdk/chunk-VF6XIUE4.mjs.map +1 -0
  108. package/dist/sdk/{chunk-J2QWVDXK.mjs → chunk-XDLQ3UNF.mjs} +3 -3
  109. package/dist/sdk/{chunk-S2RUE2RG.mjs → chunk-XR7XXGL7.mjs} +3 -3
  110. package/dist/sdk/{chunk-NAW3DB3I.mjs → chunk-XXAEN5KU.mjs} +3 -3
  111. package/dist/sdk/command-executor-DVVXERLR.mjs +14 -0
  112. package/dist/sdk/config-7VTT64SQ.mjs +16 -0
  113. package/dist/sdk/config-merger-RKCZJQ44.mjs +10 -0
  114. package/dist/sdk/event-bus-5K3Y2FCS.mjs +43 -0
  115. package/dist/sdk/{event-bus-5BEVPQ6T.mjs.map → event-bus-5K3Y2FCS.mjs.map} +1 -1
  116. package/dist/sdk/failure-condition-evaluator-4WMDF4Q3.mjs +17 -0
  117. package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs +471 -0
  118. package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs.map +1 -0
  119. package/dist/sdk/{github-frontend-5PCKKHVC.mjs → github-frontend-3N2NLO66.mjs} +520 -588
  120. package/dist/sdk/github-frontend-3N2NLO66.mjs.map +1 -0
  121. package/dist/sdk/host-ONVMEHAA.mjs +63 -0
  122. package/dist/sdk/host-ONVMEHAA.mjs.map +1 -0
  123. package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs → liquid-extensions-5IZLTFSZ.mjs} +8 -8
  124. package/dist/sdk/memory-store-3N4AZCYB.mjs +12 -0
  125. package/dist/sdk/{metrics-7PP3EJUH.mjs → metrics-GXQ2EDXA.mjs} +4 -4
  126. package/dist/sdk/ndjson-sink-FD2PSXGD.mjs +52 -0
  127. package/dist/sdk/{ndjson-sink-B4V4NTAQ.mjs.map → ndjson-sink-FD2PSXGD.mjs.map} +1 -1
  128. package/dist/sdk/{prompt-state-EZYOUG75.mjs → prompt-state-YHGXB2OA.mjs} +5 -5
  129. package/dist/sdk/{renderer-schema-CKFB5NDB.mjs → renderer-schema-CMXOLNIG.mjs} +4 -4
  130. package/dist/sdk/routing-S3Y7T2X3.mjs +24 -0
  131. package/dist/sdk/sdk.d.mts +212 -4
  132. package/dist/sdk/sdk.d.ts +212 -4
  133. package/dist/sdk/sdk.js +26927 -6264
  134. package/dist/sdk/sdk.js.map +1 -1
  135. package/dist/sdk/sdk.mjs +23 -1278
  136. package/dist/sdk/sdk.mjs.map +1 -1
  137. package/dist/sdk/session-registry-6PV6SGEJ.mjs +10 -0
  138. package/dist/sdk/slack-frontend-R3M2CACB.mjs +899 -0
  139. package/dist/sdk/slack-frontend-R3M2CACB.mjs.map +1 -0
  140. package/dist/sdk/{trace-helpers-VP6QYVBX.mjs → trace-helpers-YHNPC7MR.mjs} +4 -4
  141. package/dist/sdk/tracer-init-XPRWKMZT.mjs +10 -0
  142. package/dist/sdk/tui-frontend-S546M7A7.mjs +281 -0
  143. package/dist/sdk/tui-frontend-S546M7A7.mjs.map +1 -0
  144. package/dist/sdk/workflow-check-provider-4F3432ZP.mjs +28 -0
  145. package/dist/sdk/workflow-check-provider-A44PBPG2.mjs +28 -0
  146. package/dist/sdk/workflow-check-provider-A44PBPG2.mjs.map +1 -0
  147. package/dist/sdk/workflow-registry-ZAYYXLEP.mjs +12 -0
  148. package/dist/sdk/workflow-registry-ZAYYXLEP.mjs.map +1 -0
  149. package/dist/slack/client.d.ts +28 -0
  150. package/dist/slack/client.d.ts.map +1 -1
  151. package/dist/slack/schedule-tool-handler.d.ts +46 -0
  152. package/dist/slack/schedule-tool-handler.d.ts.map +1 -0
  153. package/dist/slack/slack-output-adapter.d.ts +44 -0
  154. package/dist/slack/slack-output-adapter.d.ts.map +1 -0
  155. package/dist/slack/socket-runner.d.ts +22 -0
  156. package/dist/slack/socket-runner.d.ts.map +1 -1
  157. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
  158. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
  159. package/dist/state-machine/dispatch/sandbox-routing.d.ts +21 -0
  160. package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -0
  161. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
  162. package/dist/state-machine-execution-engine.d.ts.map +1 -1
  163. package/dist/test-runner/index.d.ts +5 -0
  164. package/dist/test-runner/index.d.ts.map +1 -1
  165. package/dist/{output/traces/run-2026-02-01T09-59-08-165Z.ndjson → traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
  166. package/dist/{output/traces/run-2026-02-01T09-59-52-595Z.ndjson → traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
  167. package/dist/tui/chat-runner.d.ts +39 -0
  168. package/dist/tui/chat-runner.d.ts.map +1 -0
  169. package/dist/tui/chat-state.d.ts +56 -0
  170. package/dist/tui/chat-state.d.ts.map +1 -0
  171. package/dist/tui/chat-tui.d.ts +69 -0
  172. package/dist/tui/chat-tui.d.ts.map +1 -0
  173. package/dist/tui/components/chat-box.d.ts +33 -0
  174. package/dist/tui/components/chat-box.d.ts.map +1 -0
  175. package/dist/tui/components/input-bar.d.ts +50 -0
  176. package/dist/tui/components/input-bar.d.ts.map +1 -0
  177. package/dist/tui/components/status-bar.d.ts +31 -0
  178. package/dist/tui/components/status-bar.d.ts.map +1 -0
  179. package/dist/tui/components/trace-viewer.d.ts +73 -0
  180. package/dist/tui/components/trace-viewer.d.ts.map +1 -0
  181. package/dist/tui/index.d.ts +14 -0
  182. package/dist/tui/index.d.ts.map +1 -0
  183. package/dist/tui/tui-frontend.d.ts +29 -0
  184. package/dist/tui/tui-frontend.d.ts.map +1 -0
  185. package/dist/types/bot.d.ts +35 -0
  186. package/dist/types/bot.d.ts.map +1 -1
  187. package/dist/types/config.d.ts +152 -3
  188. package/dist/types/config.d.ts.map +1 -1
  189. package/dist/types/engine.d.ts +3 -0
  190. package/dist/types/engine.d.ts.map +1 -1
  191. package/dist/utils/sandbox.d.ts.map +1 -1
  192. package/dist/utils/workspace-manager.d.ts +22 -2
  193. package/dist/utils/workspace-manager.d.ts.map +1 -1
  194. package/dist/utils/worktree-manager.d.ts +2 -1
  195. package/dist/utils/worktree-manager.d.ts.map +1 -1
  196. package/package.json +4 -2
  197. package/dist/docs/NPM_USAGE.md +0 -281
  198. package/dist/generated/config-schema.json +0 -2161
  199. package/dist/sdk/check-provider-registry-CVUONJ5A.mjs +0 -28
  200. package/dist/sdk/chunk-BOVFH3LI.mjs.map +0 -1
  201. package/dist/sdk/chunk-TS6BUNAI.mjs +0 -17722
  202. package/dist/sdk/chunk-TS6BUNAI.mjs.map +0 -1
  203. package/dist/sdk/chunk-XWJPT5KQ.mjs.map +0 -1
  204. package/dist/sdk/command-executor-Q7MHJKZJ.mjs +0 -14
  205. package/dist/sdk/config-DXX64GD3.mjs +0 -16
  206. package/dist/sdk/config-merger-PX3WIT57.mjs +0 -10
  207. package/dist/sdk/event-bus-5BEVPQ6T.mjs +0 -35
  208. package/dist/sdk/failure-condition-evaluator-G4HMJPXF.mjs +0 -17
  209. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +0 -458
  210. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +0 -1
  211. package/dist/sdk/github-frontend-5PCKKHVC.mjs.map +0 -1
  212. package/dist/sdk/host-H3AWNZ2F.mjs +0 -52
  213. package/dist/sdk/host-H3AWNZ2F.mjs.map +0 -1
  214. package/dist/sdk/memory-store-RW5N2NGJ.mjs +0 -12
  215. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +0 -44
  216. package/dist/sdk/routing-QHTGDIXF.mjs +0 -24
  217. package/dist/sdk/session-registry-4E6YRQ77.mjs +0 -10
  218. package/dist/sdk/slack-frontend-JUT3TYVC.mjs +0 -821
  219. package/dist/sdk/slack-frontend-JUT3TYVC.mjs.map +0 -1
  220. package/dist/sdk/tracer-init-GSLPPLCD.mjs +0 -10
  221. package/dist/sdk/workflow-check-provider-3IWBAZP7.mjs +0 -28
  222. package/dist/sdk/workflow-registry-KFWSDSLM.mjs +0 -12
  223. package/dist/tui.d.ts +0 -51
  224. package/dist/tui.d.ts.map +0 -1
  225. /package/dist/sdk/{check-provider-registry-CVUONJ5A.mjs.map → check-provider-registry-ACRGIYOB.mjs.map} +0 -0
  226. /package/dist/sdk/{chunk-WMJKH4XE.mjs.map → check-provider-registry-VYHKFHK2.mjs.map} +0 -0
  227. /package/dist/sdk/{chunk-CNX7V5JK.mjs.map → chunk-25IC7KXZ.mjs.map} +0 -0
  228. /package/dist/sdk/{chunk-IHZOSIF4.mjs.map → chunk-2KB35MB7.mjs.map} +0 -0
  229. /package/dist/sdk/{chunk-HQL734ZI.mjs.map → chunk-6W75IMDC.mjs.map} +0 -0
  230. /package/dist/sdk/{chunk-3OMWVM6J.mjs.map → chunk-B7BVQM5K.mjs.map} +0 -0
  231. /package/dist/sdk/{chunk-VW2GBXQT.mjs.map → chunk-D5KI4YQ4.mjs.map} +0 -0
  232. /package/dist/sdk/{command-executor-Q7MHJKZJ.mjs.map → chunk-J7LXIPZS.mjs.map} +0 -0
  233. /package/dist/sdk/{chunk-EXFGO4FX.mjs.map → chunk-KFKHU6CM.mjs.map} +0 -0
  234. /package/dist/sdk/{chunk-MPS4HVQI.mjs.map → chunk-N7HO6KKC.mjs.map} +0 -0
  235. /package/dist/sdk/{chunk-O5EZDNYL.mjs.map → chunk-NCWIZVOT.mjs.map} +0 -0
  236. /package/dist/sdk/{chunk-3NMLT3YS.mjs.map → chunk-PO7X5XI7.mjs.map} +0 -0
  237. /package/dist/sdk/{chunk-BHOKBQPB.mjs.map → chunk-R5Z7YWPB.mjs.map} +0 -0
  238. /package/dist/sdk/{chunk-EORMDOZU.mjs.map → chunk-SGS2VMEL.mjs.map} +0 -0
  239. /package/dist/sdk/{chunk-J2QWVDXK.mjs.map → chunk-XDLQ3UNF.mjs.map} +0 -0
  240. /package/dist/sdk/{chunk-S2RUE2RG.mjs.map → chunk-XR7XXGL7.mjs.map} +0 -0
  241. /package/dist/sdk/{chunk-NAW3DB3I.mjs.map → chunk-XXAEN5KU.mjs.map} +0 -0
  242. /package/dist/sdk/{config-DXX64GD3.mjs.map → command-executor-DVVXERLR.mjs.map} +0 -0
  243. /package/dist/sdk/{config-merger-PX3WIT57.mjs.map → config-7VTT64SQ.mjs.map} +0 -0
  244. /package/dist/sdk/{failure-condition-evaluator-G4HMJPXF.mjs.map → config-merger-RKCZJQ44.mjs.map} +0 -0
  245. /package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs.map → failure-condition-evaluator-4WMDF4Q3.mjs.map} +0 -0
  246. /package/dist/sdk/{memory-store-RW5N2NGJ.mjs.map → liquid-extensions-5IZLTFSZ.mjs.map} +0 -0
  247. /package/dist/sdk/{metrics-7PP3EJUH.mjs.map → memory-store-3N4AZCYB.mjs.map} +0 -0
  248. /package/dist/sdk/{prompt-state-EZYOUG75.mjs.map → metrics-GXQ2EDXA.mjs.map} +0 -0
  249. /package/dist/sdk/{routing-QHTGDIXF.mjs.map → prompt-state-YHGXB2OA.mjs.map} +0 -0
  250. /package/dist/sdk/{renderer-schema-CKFB5NDB.mjs.map → renderer-schema-CMXOLNIG.mjs.map} +0 -0
  251. /package/dist/sdk/{session-registry-4E6YRQ77.mjs.map → routing-S3Y7T2X3.mjs.map} +0 -0
  252. /package/dist/sdk/{trace-helpers-VP6QYVBX.mjs.map → session-registry-6PV6SGEJ.mjs.map} +0 -0
  253. /package/dist/sdk/{tracer-init-GSLPPLCD.mjs.map → trace-helpers-YHNPC7MR.mjs.map} +0 -0
  254. /package/dist/sdk/{workflow-check-provider-3IWBAZP7.mjs.map → tracer-init-XPRWKMZT.mjs.map} +0 -0
  255. /package/dist/sdk/{workflow-registry-KFWSDSLM.mjs.map → workflow-check-provider-4F3432ZP.mjs.map} +0 -0
@@ -0,0 +1,420 @@
1
+ version: "1.0"
2
+
3
+ # Default Visor configuration - provides comprehensive code analysis out-of-the-box
4
+ # Uses mock provider for CI compatibility when no AI API keys are configured
5
+ # Users can override this by creating their own .visor.yaml in their project root
6
+
7
+ # Global AI provider settings - users should configure their preferred provider
8
+ # For CI testing, use --provider mock CLI flag instead
9
+
10
+ # Run checks sequentially to ensure session reuse works correctly
11
+ max_parallelism: 1
12
+
13
+ # 🔄 AI Session Reuse Feature:
14
+ # This configuration demonstrates the new 'reuse_ai_session' feature that allows
15
+ # dependent checks to continue conversations with the same AI session, providing
16
+ # context continuity and more intelligent follow-up analysis.
17
+ #
18
+ # Example: security-remediation reuses the session from the security check,
19
+ # allowing the AI to reference the previous security analysis discussion.
20
+
21
+ # Global fail condition - fail if critical or error severity issues are found
22
+ fail_if: "output.issues && output.issues.some(i => i.severity === 'critical' || i.severity === 'error')"
23
+
24
+ checks:
25
+ # AI-powered release notes generation - manual execution only for release workflows
26
+ release-notes:
27
+ type: ai
28
+ group: release
29
+ schema: plain
30
+ prompt: |
31
+ Generate professional release notes for version {{ env.TAG_NAME }} of this project.
32
+
33
+ Analyze the git commits since the last release:
34
+ ```
35
+ {{ env.GIT_LOG }}
36
+ ```
37
+
38
+ And the file changes summary:
39
+ ```
40
+ {{ env.GIT_DIFF_STAT }}
41
+ ```
42
+
43
+ Create release notes with these sections:
44
+
45
+ ## 🚀 What's New in {{ env.TAG_NAME }}
46
+
47
+ ### ✨ New Features
48
+ List any new features added (look for feat: commits)
49
+
50
+ ### 🐛 Bug Fixes
51
+ List any bugs fixed (look for fix: commits)
52
+
53
+ ### 📈 Improvements
54
+ List any improvements or refactoring (look for refactor:, perf:, chore:, build: commits)
55
+
56
+ ### 🔥 Breaking Changes
57
+ List any breaking changes if present (look for BREAKING CHANGE or ! in commits)
58
+
59
+ ### 📊 Statistics
60
+ - Number of commits since last release
61
+ - Number of contributors involved
62
+ - Number of files changed
63
+
64
+ Keep descriptions concise and user-friendly. Focus on what changed from a user perspective, not implementation details.
65
+ Use present tense and action-oriented language. Group similar changes together.
66
+ on: [manual]
67
+
68
+ # PR overview with intelligent analysis - runs first to establish context
69
+ overview:
70
+ type: ai
71
+ group: overview
72
+ prompt: |
73
+ # 📋 Pull Request Overview: {{ pr.title }}
74
+
75
+ {% if pr.body %}
76
+ ## Description
77
+ {{ pr.body }}
78
+ {% endif %}
79
+
80
+ ## Files Changed Analysis
81
+
82
+ Analyze the files listed in the `<files_summary>` section, which provides a structured overview of all changes including filenames, status, additions, and deletions.
83
+
84
+ ## Architecture & Impact Assessment
85
+
86
+ Please generate a comprehensive overview and analysis of this pull request.
87
+
88
+ Follow these instructions to create a thorough assessment:
89
+
90
+ 1. **Change Impact Analysis**
91
+ - What this PR accomplishes
92
+ - Key technical changes introduced
93
+ - Affected system components
94
+
95
+ 2. **Architecture Visualization**
96
+ - Create appropriate mermaid diagram(s) to visualize the changes
97
+ - Choose the best diagram type for the context
98
+ - Use multiple diagrams if needed to explain different aspects
99
+ - Focus on modified components and their relationships
100
+
101
+ Provide a balanced technical assessment suitable for both developers and stakeholders.
102
+ on: [pr_opened, pr_updated]
103
+
104
+ # Security analysis - Critical for all projects
105
+ security:
106
+ type: ai
107
+ group: review
108
+ schema: code-review
109
+ prompt: |
110
+ Based on our overview discussion, please perform a comprehensive security analysis of the code changes.
111
+
112
+ Analyze the files listed in the `<files_summary>` section and focus on the code changes shown in the diff sections.
113
+
114
+ ## Security Analysis Areas
115
+
116
+ **Input Validation & Injection:**
117
+ - SQL injection in database queries
118
+ - XSS vulnerabilities in user input handling
119
+ - Command injection in system calls
120
+ - Path traversal in file operations
121
+
122
+ **Authentication & Authorization:**
123
+ - Weak authentication mechanisms
124
+ - Session management flaws
125
+ - Access control bypasses
126
+ - Privilege escalation opportunities
127
+
128
+ **Data Protection:**
129
+ - Sensitive data exposure in logs/errors
130
+ - Unencrypted data storage
131
+ - API key or credential leaks
132
+ - Privacy regulation compliance
133
+
134
+ **Infrastructure Security:**
135
+ - Insecure configurations
136
+ - Missing security headers
137
+ - Vulnerable dependencies
138
+ - Resource exhaustion vulnerabilities
139
+
140
+ Provide specific findings with clear explanations and actionable remediation steps.
141
+
142
+ ## Severity Guidelines
143
+ Use the following severity levels appropriately:
144
+ - **critical**: Security vulnerabilities that could lead to immediate compromise (RCE, SQL injection, authentication bypass, exposed secrets)
145
+ - **error**: Security issues that must be fixed before production (XSS, path traversal, weak crypto, missing auth checks)
146
+ - **warning**: Security concerns that should be addressed (verbose errors, missing rate limiting, insecure defaults)
147
+ - **info**: Security best practices and hardening suggestions (defense in depth, additional validation)
148
+ depends_on: [overview]
149
+ reuse_ai_session: true # 🔄 Reuses the overview check's AI session for context continuity
150
+ on: [pr_opened, pr_updated]
151
+
152
+ # Performance analysis - Important for all applications
153
+ performance:
154
+ type: ai
155
+ group: review
156
+ schema: code-review
157
+ prompt: |
158
+ Building on our overview and security analysis, now review the code changes for performance issues.
159
+
160
+ Focus on the files listed in `<files_summary>` and analyze the code changes shown in the `<full_diff>` or `<commit_diff>` sections.
161
+
162
+ ## Performance Analysis Areas
163
+ **Algorithm & Data Structure Efficiency:**
164
+ - Time complexity analysis (O(n), O(n²), etc.)
165
+ - Space complexity and memory usage
166
+ - Inefficient loops and nested operations
167
+ - Suboptimal data structure choices
168
+
169
+ **Database Performance:**
170
+ - N+1 query problems
171
+ - Missing database indexes
172
+ - Inefficient JOIN operations
173
+ - Large result set retrievals
174
+
175
+ **Resource Management:**
176
+ - Memory leaks and excessive allocations
177
+ - File handle management
178
+ - Connection pooling issues
179
+ - Resource cleanup patterns
180
+
181
+ **Async & Concurrency:**
182
+ - Blocking operations in async contexts
183
+ - Race conditions and deadlocks
184
+ - Inefficient parallel processing
185
+
186
+ Building on our overview and security analysis, identify performance issues and provide optimization recommendations that complement our previous findings.
187
+
188
+ ## Severity Guidelines
189
+ Use the following severity levels appropriately:
190
+ - **critical**: Performance issues causing system failure or severe degradation (infinite loops, memory leaks causing OOM)
191
+ - **error**: Significant performance problems affecting user experience (O(n²) in critical path, N+1 queries, blocking I/O)
192
+ - **warning**: Performance concerns that should be optimized (inefficient algorithms, missing indexes, unnecessary operations)
193
+ - **info**: Performance best practices and optimization opportunities (caching suggestions, async improvements)
194
+ depends_on: [security]
195
+ reuse_ai_session: true # 🔄 Reuses the security check's AI session for context continuity
196
+ on: [pr_opened, pr_updated]
197
+
198
+ # Code quality and maintainability
199
+ quality:
200
+ type: ai
201
+ group: review
202
+ schema: code-review
203
+ prompt: |
204
+ Building on our overview, security, and performance discussions, evaluate the code quality and maintainability.
205
+
206
+ Review the code changes shown in the `<full_diff>` or `<commit_diff>` sections, considering the files listed in `<files_summary>`.
207
+
208
+ ## Quality Assessment Areas
209
+ **Code Structure & Design:**
210
+ - SOLID principles adherence
211
+ - Design pattern appropriateness
212
+ - Separation of concerns
213
+ - Code organization and clarity
214
+
215
+ **Error Handling & Reliability:**
216
+ - Exception handling completeness
217
+ - Error propagation patterns
218
+ - Input validation thoroughness
219
+ - Edge case coverage
220
+
221
+ **Testing & Test Coverage:**
222
+ - Missing tests for critical functionality
223
+ - Test coverage gaps
224
+ - Test quality and effectiveness
225
+ - Edge cases and error scenarios coverage
226
+
227
+ **Maintainability:**
228
+ - Code testability issues
229
+ - Dependencies and coupling problems
230
+ - Technical debt introduction
231
+ - Code duplication (DRY violations)
232
+
233
+ **Language-Specific Best Practices:**
234
+ - Idiomatic code usage
235
+ - Framework/library best practices
236
+ - Type safety (if applicable)
237
+
238
+ Focus on actionable improvements that enhance code maintainability while considering the overview, security, and performance findings we've already discussed.
239
+
240
+ ## Severity Guidelines
241
+ Use the following severity levels appropriately:
242
+ - **critical**: Code quality issues that will cause bugs or failures (logic errors, race conditions, null pointer issues)
243
+ - **error**: Quality problems that significantly impact maintainability (no error handling, high complexity, severe coupling)
244
+ - **warning**: Quality concerns that should be addressed (missing tests, code duplication, poor naming)
245
+ - **info**: Best practices and improvement suggestions (refactoring opportunities, documentation improvements)
246
+ depends_on: [performance]
247
+ reuse_ai_session: true # 🔄 Reuses the performance check's AI session for context continuity
248
+ on: [pr_opened, pr_updated]
249
+
250
+ # Code style and formatting analysis
251
+ style:
252
+ type: ai
253
+ group: review
254
+ schema: code-review
255
+ prompt: |
256
+ Building on our overview, security, performance, and quality discussions, analyze the code style and formatting consistency.
257
+
258
+ Review the code changes shown in the `<full_diff>` or `<commit_diff>` sections, considering the files listed in `<files_summary>`.
259
+
260
+ ## Style Assessment Areas
261
+ **Code Formatting & Consistency:**
262
+ - Indentation and spacing consistency
263
+ - Naming conventions adherence
264
+ - Code organization and structure
265
+ - Comment style and documentation
266
+
267
+ **Language-Specific Style Guidelines:**
268
+ - Adherence to language style guides (PEP 8, ESLint, etc.)
269
+ - Import/require statement organization
270
+ - Variable and function naming patterns
271
+ - Code readability and clarity
272
+
273
+ **Team Standards:**
274
+ - Consistency with existing codebase patterns
275
+ - Formatting tool configuration compliance
276
+ - Documentation standards adherence
277
+ - Code comment quality and completeness
278
+
279
+ Focus on style improvements that enhance code readability and maintainability while considering our previous analysis.
280
+
281
+ ## Severity Guidelines
282
+ Use the following severity levels appropriately:
283
+ - **critical**: Never use for style issues (style issues are never critical)
284
+ - **error**: Major style violations that significantly harm readability (completely inconsistent formatting, misleading names)
285
+ - **warning**: Style inconsistencies that should be fixed (mixed conventions, unclear naming, formatting issues)
286
+ - **info**: Style suggestions and minor improvements (spacing, comment formatting, optional conventions)
287
+ depends_on: [quality]
288
+ reuse_ai_session: true # 🔄 Reuses the quality check's AI session for context continuity
289
+ on: [pr_opened, pr_updated]
290
+
291
+ # Command orchestrator - demonstrates noop type for triggering multiple checks
292
+ review-all:
293
+ type: noop
294
+ command: '/review'
295
+ depends_on: [overview, security, performance, quality, style]
296
+ on: [issue_comment]
297
+ if: "event.isPullRequest" # Only trigger on PR comments, not issues
298
+ group: orchestrator
299
+
300
+ # Intelligent Issue Assistant - provides sophisticated issue triage and assistance
301
+ issue-assistant:
302
+ type: ai
303
+ group: dynamic # Special group: creates new comment each time instead of updating
304
+ command: "visor"
305
+ if: "event.name === 'issues' && event.action === 'opened' || (event.name === 'issue_comment' && event.comment && event.comment.body && event.comment.body.trim().startsWith('/visor'))"
306
+ prompt: |
307
+ You are an intelligent GitHub issue assistant for the {{ event.repository.fullName }} repository. Your role is to provide professional, knowledgeable assistance based on the trigger event.
308
+
309
+ ## Event Context
310
+ **Event Type**: {{ event.name }} - {{ event.action }}
311
+ {% if event.issue -%}
312
+ **Issue #{{ event.issue.number }}**: {{ event.issue.title }}
313
+ **Author**: {{ event.issue.author }}
314
+ **State**: {{ event.issue.state }}
315
+ **Created**: {{ event.issue.createdAt }}
316
+ {%- if event.issue.labels.size > 0 %}
317
+ **Labels**: {% for label in event.issue.labels %}{{ label.name }}{% unless forloop.last %}, {% endunless %}{% endfor %}
318
+ {%- endif %}
319
+ {%- if event.issue.assignees.size > 0 %}
320
+ **Assignees**: {% for assignee in event.issue.assignees %}{{ assignee }}{% unless forloop.last %}, {% endunless %}{% endfor %}
321
+ {%- endif %}
322
+ {%- endif %}
323
+ {%- if event.comment %}
324
+ **Comment by**: {{ event.comment.author }}
325
+ {%- endif %}
326
+
327
+ ## Repository Analysis Context
328
+ {%- if event.isPullRequest and pr.title %}
329
+ **PR Context**: {{ pr.title }}
330
+ {%- endif %}
331
+ {%- if event.repository %}
332
+ **Repository**: {{ event.repository.fullName }}
333
+ {%- endif %}
334
+
335
+ ## Instructions
336
+
337
+ {%- if event.name == 'issues' and event.action == 'opened' %}
338
+
339
+ **ISSUE TRIAGE MODE**
340
+
341
+ Analyze this new issue and provide intelligent triage:
342
+
343
+ ### Issue Content
344
+ {{ event.issue.body }}
345
+
346
+ ### Analysis Tasks
347
+ 1. **Categorize** the issue (bug/feature/documentation/question/enhancement/maintenance)
348
+ 2. **Assess priority** (low/medium/high/urgent) based on:
349
+ - Impact on users/system
350
+ - Security implications
351
+ - Blocking nature
352
+ - Community interest
353
+ 3. **Estimate complexity** (trivial/simple/moderate/complex)
354
+ 4. **Suggest timeline** for resolution
355
+ 5. **Recommend labels** that would help with organization
356
+ 6. **Identify stakeholders** who should be involved or assignees
357
+ 7. **Provide initial response** to the issue author
358
+
359
+ ### Response Requirements
360
+ - Be professional and welcoming
361
+ - Show you understand the request
362
+ - Provide clear next steps
363
+ - Ask clarifying questions if needed
364
+ - Include technical insights where appropriate
365
+
366
+ {%- elsif event.name == 'issue_comment' %}
367
+
368
+ **ASSISTANCE MODE**
369
+
370
+ A user has asked a question or provided additional information. Provide helpful technical assistance:
371
+
372
+ ### Original Issue
373
+ {%- if event.issue.title %}
374
+ **Title**: {{ event.issue.title }}
375
+ {%- endif %}
376
+ {%- if event.issue.body %}
377
+ **Description**: {{ event.issue.body }}
378
+ {%- endif %}
379
+
380
+ ### Latest Comment
381
+ {{ event.comment.body }}
382
+
383
+ ### Analysis Tasks
384
+ 1. **Understand the context** of their question/comment
385
+ 2. **Provide technical guidance** based on project knowledge
386
+ 3. **Reference relevant code/files** if applicable
387
+ 4. **Suggest implementation approaches** for feature requests
388
+ 5. **Provide debugging steps** for bug reports
389
+ 6. **Link to documentation** or similar issues if helpful
390
+ 7. **Offer code examples** when appropriate
391
+
392
+ ### Response Requirements
393
+ - Address their specific question directly
394
+ - Provide actionable guidance
395
+ - Be encouraging and supportive
396
+ - Use technical language appropriate to their level
397
+ - Include code examples where helpful
398
+ - Reference project conventions and patterns
399
+
400
+ {%- endif %}
401
+
402
+ ### Special Instructions
403
+ - Always be professional, helpful, and encouraging
404
+ - Focus on actionable advice and clear next steps
405
+ - Use markdown formatting for better readability
406
+ - Include relevant code examples when helpful
407
+ - Reference project context and patterns when applicable
408
+ - If dealing with `/visor` commands in comments, acknowledge and provide assistance
409
+ - Maintain consistency with project tone and contributor guidelines
410
+
411
+ ### Response Format
412
+ Provide a well-structured markdown response with clear sections and helpful guidance.
413
+ on: [issue_opened, issue_comment]
414
+
415
+ # Output configuration
416
+ output:
417
+ pr_comment:
418
+ format: markdown
419
+ group_by: check
420
+ collapse: true
@@ -104,7 +104,7 @@ visor mcp-server [options]
104
104
  - `--config <path>` - Path to configuration file
105
105
 
106
106
  #### Execution Control
107
- - `--timeout <ms>` - Timeout for operations (default: 1200000ms / 20 minutes)
107
+ - `--timeout <ms>` - Timeout for operations (default: 1200000ms / 30 minutes)
108
108
  - `--max-parallelism <count>` - Maximum parallel checks (default: 3)
109
109
  - `--fail-fast` - Stop execution on first failure
110
110
 
@@ -3,6 +3,7 @@
3
3
  This guide provides comprehensive debugging techniques and tools to help troubleshoot Visor configurations, checks, and transformations.
4
4
 
5
5
  ## Table of Contents
6
+ - [Running Visor Locally](#running-visor-locally)
6
7
  - [Debug Mode](#debug-mode)
7
8
  - [Debugging JavaScript Expressions](#debugging-javascript-expressions)
8
9
  - [Debugging Liquid Templates](#debugging-liquid-templates)
@@ -13,6 +14,138 @@ This guide provides comprehensive debugging techniques and tools to help trouble
13
14
  - [Tracing with OpenTelemetry](#tracing-with-opentelemetry)
14
15
  - [Debug Visualizer](#debug-visualizer)
15
16
 
17
+ ## Running Visor Locally
18
+
19
+ ### Building from Source
20
+
21
+ ```bash
22
+ # Install dependencies
23
+ npm install
24
+
25
+ # Build the project
26
+ npm run build
27
+
28
+ # Run the CLI
29
+ ./dist/cli-main.js --help
30
+ # or
31
+ ./dist/index.js --help
32
+ ```
33
+
34
+ ### Basic CLI Usage
35
+
36
+ ```bash
37
+ # Run with a config file
38
+ ./dist/index.js --config ./examples/calculator-config.yaml
39
+
40
+ # Run specific checks only
41
+ ./dist/index.js --config .visor.yaml --check security,lint
42
+
43
+ # Run with debug output
44
+ ./dist/index.js --config .visor.yaml --debug
45
+
46
+ # Output in different formats
47
+ ./dist/index.js --config .visor.yaml --output json
48
+ ./dist/index.js --config .visor.yaml --output markdown
49
+ ./dist/index.js --config .visor.yaml --output sarif
50
+
51
+ # Pass inline messages for human-input checks
52
+ ./dist/index.js --config ./examples/calculator-config.yaml --message "42"
53
+ ```
54
+
55
+ ### TUI Mode (Interactive Terminal Interface)
56
+
57
+ The `--tui` flag enables a persistent terminal interface for any workflow. The workflow runs immediately, and you can re-run it by typing new messages after completion:
58
+
59
+ ```bash
60
+ # Start with TUI mode
61
+ ./dist/index.js --tui --config ./examples/calculator-config.yaml
62
+
63
+ # TUI with debug output (logs go to second tab)
64
+ ./dist/index.js --tui --config .visor.yaml --debug
65
+ ```
66
+
67
+ **TUI Features:**
68
+ - **Chat Tab**: Shows workflow prompts and results in a chat-like interface
69
+ - **Logs Tab**: Press `Shift+Tab` or `2` to switch to logs view
70
+ - **Traces Tab**: Real-time OpenTelemetry trace visualization with execution tree
71
+ - **Persistent Input**: Type messages at any time to interact with the workflow
72
+ - **Re-run Workflows**: After completion, type a new message to re-run
73
+
74
+ **TUI Key Bindings:**
75
+ | Key | Action |
76
+ |-----|--------|
77
+ | `Enter` | Submit input |
78
+ | `Shift+Tab` | Cycle between Chat, Logs, and Traces tabs |
79
+ | `1` / `2` / `3` | Switch to Chat / Logs / Traces tab directly |
80
+ | `e` | Toggle engine state visibility (Traces tab only) |
81
+ | `Escape` | Clear input |
82
+ | `Ctrl+C` | Exit / Abort workflow |
83
+ | `q` | Exit (when workflow is complete) |
84
+
85
+ **Traces Tab Features:**
86
+ - Real-time execution tree showing check hierarchy
87
+ - forEach iterations grouped under parent check with index
88
+ - IN/OUT/ERR lines showing inputs, outputs, and errors for each span
89
+ - Press `e` to toggle engine state spans (LevelDispatch, WavePlanning, etc.)
90
+ - Engine states hidden by default to focus on your checks
91
+
92
+ ### Debug Server (Visual Debugger)
93
+
94
+ The debug server provides a web-based UI for stepping through workflow execution:
95
+
96
+ ```bash
97
+ # Start with debug server
98
+ ./dist/index.js --config .visor.yaml --debug-server --debug-port 3456
99
+
100
+ # For headless/CI environments (skip auto-opening browser)
101
+ VISOR_NOBROWSER=true ./dist/index.js --config .visor.yaml --debug-server
102
+ ```
103
+
104
+ Open http://localhost:3456 to view the visual debugger. You can:
105
+ - Click "Start" to begin execution
106
+ - Pause/resume workflow execution
107
+ - View spans and timing information
108
+ - See check outputs and errors
109
+
110
+ ### Combining Debug Options
111
+
112
+ ```bash
113
+ # TUI + Debug mode (verbose logging in logs tab)
114
+ ./dist/index.js --tui --config .visor.yaml --debug
115
+
116
+ # Debug server + Debug mode (full visibility)
117
+ ./dist/index.js --config .visor.yaml --debug-server --debug
118
+
119
+ # Full tracing with Jaeger
120
+ VISOR_TELEMETRY_ENABLED=true \
121
+ VISOR_TELEMETRY_SINK=otlp \
122
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces \
123
+ ./dist/index.js --config .visor.yaml --debug
124
+ ```
125
+
126
+ ### Development Workflow Tips
127
+
128
+ 1. **Use TUI for interactive workflows**: When developing workflows with human-input checks, TUI mode provides the best experience.
129
+
130
+ 2. **Check logs and traces tabs**: In TUI mode, press `Shift+Tab` to cycle tabs. Use the Logs tab for detailed execution logs and the Traces tab for visual execution flow.
131
+
132
+ 3. **Use JSON output for debugging**: `--output json` gives you the full result structure to inspect.
133
+
134
+ 4. **Watch mode for rapid iteration**:
135
+ ```bash
136
+ # In one terminal - watch and rebuild
137
+ npm run build -- --watch
138
+
139
+ # In another terminal - run your workflow
140
+ ./dist/index.js --tui --config ./my-workflow.yaml
141
+ ```
142
+
143
+ 5. **Run tests for specific features**:
144
+ ```bash
145
+ npm test -- --testPathPattern="human-input"
146
+ npm test -- --testPathPattern="memory"
147
+ ```
148
+
16
149
  ## Debug Mode
17
150
 
18
151
  Enable debug mode to see detailed execution information:
@@ -66,6 +66,16 @@ npm test
66
66
  | `npm run simulate:issue` | Simulate GitHub issue event |
67
67
  | `npm run simulate:comment` | Simulate GitHub comment event |
68
68
 
69
+ #### Running Locally
70
+ | Command | Description |
71
+ |---------|-------------|
72
+ | `./dist/index.js --config .visor.yaml` | Run with config file |
73
+ | `./dist/index.js --tui --config ./workflow.yaml` | Interactive TUI mode |
74
+ | `./dist/index.js --debug-server --debug-port 3456` | Visual debugger |
75
+ | `./dist/index.js --tui --debug` | TUI with debug logging |
76
+
77
+ See [Debugging Guide](debugging.md) for complete local development documentation.
78
+
69
79
  ### Using Visor Effectively
70
80
 
71
81
  - **Start with defaults**: Copy `defaults/visor.yaml` or an example from `examples/`; run `npx -y @probelabs/visor@latest --check all --debug`.
@@ -116,6 +116,7 @@ The test framework allows you to write integration tests for your Visor workflow
116
116
  |----------|-------------|
117
117
  | [GitHub Checks](./GITHUB_CHECKS.md) | GitHub Checks API integration for PR status reporting |
118
118
  | [Slack Integration](./slack-integration.md) | Bidirectional Slack integration via Socket Mode |
119
+ | [Scheduler](./scheduler.md) | Schedule workflows and reminders to run at specified times |
119
120
  | [Deployment](./DEPLOYMENT.md) | Cloudflare Pages deployment for landing page |
120
121
 
121
122
  ---