@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.
- package/README.md +31 -1
- package/defaults/.visor.yaml +420 -0
- package/dist/ai-review-service.d.ts +1 -0
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/daemon.js +19 -0
- package/dist/defaults/.visor.yaml +420 -0
- package/dist/docs/commands.md +1 -1
- package/dist/docs/debugging.md +133 -0
- package/dist/docs/dev-playbook.md +10 -0
- package/dist/docs/index.md +1 -0
- package/dist/docs/scheduler.md +503 -0
- package/dist/docs/slack-integration.md +21 -0
- package/dist/docs/timeouts.md +1 -1
- package/dist/docs/workflow-creation-guide.md +39 -0
- package/dist/examples/README.md +30 -0
- package/dist/examples/calculator-config.yaml +4 -4
- package/dist/examples/sandbox-basic.yaml +18 -0
- package/dist/examples/sandbox-cache.yaml +32 -0
- package/dist/examples/sandbox-dockerfile-inline.yaml +22 -0
- package/dist/examples/sandbox-env-passthrough.yaml +26 -0
- package/dist/examples/sandbox-multi-env.yaml +27 -0
- package/dist/examples/sandbox-read-only.yaml +33 -0
- package/dist/examples/scheduler-example.yaml +118 -0
- package/dist/frontends/host.d.ts.map +1 -1
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +230 -9
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/index.js +13676 -1604
- package/dist/mcp-server.d.ts +8 -8
- package/dist/{traces/run-2026-02-01T09-59-08-165Z.ndjson → output/traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
- package/dist/{traces/run-2026-02-01T09-59-52-595Z.ndjson → output/traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
- package/dist/providers/ai-check-provider.d.ts +16 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +5 -0
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/log-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts +3 -0
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +22 -2
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/providers/workflow-tool-executor.d.ts +2 -0
- package/dist/providers/workflow-tool-executor.d.ts.map +1 -1
- package/dist/sandbox/cache-volume-manager.d.ts +48 -0
- package/dist/sandbox/cache-volume-manager.d.ts.map +1 -0
- package/dist/sandbox/check-runner.d.ts +25 -0
- package/dist/sandbox/check-runner.d.ts.map +1 -0
- package/dist/sandbox/docker-compose-sandbox.d.ts +25 -0
- package/dist/sandbox/docker-compose-sandbox.d.ts.map +1 -0
- package/dist/sandbox/docker-image-sandbox.d.ts +32 -0
- package/dist/sandbox/docker-image-sandbox.d.ts.map +1 -0
- package/dist/sandbox/env-filter.d.ts +19 -0
- package/dist/sandbox/env-filter.d.ts.map +1 -0
- package/dist/sandbox/index.d.ts +9 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/sandbox-manager.d.ts +39 -0
- package/dist/sandbox/sandbox-manager.d.ts.map +1 -0
- package/dist/sandbox/sandbox-telemetry.d.ts +9 -0
- package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -0
- package/dist/sandbox/trace-ingester.d.ts +19 -0
- package/dist/sandbox/trace-ingester.d.ts.map +1 -0
- package/dist/sandbox/types.d.ts +149 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/scheduler/cli-handler.d.ts +6 -0
- package/dist/scheduler/cli-handler.d.ts.map +1 -0
- package/dist/scheduler/index.d.ts +14 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/schedule-parser.d.ts +34 -0
- package/dist/scheduler/schedule-parser.d.ts.map +1 -0
- package/dist/scheduler/schedule-store.d.ts +182 -0
- package/dist/scheduler/schedule-store.d.ts.map +1 -0
- package/dist/scheduler/schedule-tool.d.ts +137 -0
- package/dist/scheduler/schedule-tool.d.ts.map +1 -0
- package/dist/scheduler/scheduler.d.ts +195 -0
- package/dist/scheduler/scheduler.d.ts.map +1 -0
- package/dist/sdk/check-provider-registry-ACRGIYOB.mjs +28 -0
- package/dist/sdk/check-provider-registry-VYHKFHK2.mjs +28 -0
- package/dist/sdk/{chunk-CNX7V5JK.mjs → chunk-25IC7KXZ.mjs} +2 -2
- package/dist/sdk/{chunk-IHZOSIF4.mjs → chunk-2KB35MB7.mjs} +3 -3
- package/dist/sdk/{chunk-HQL734ZI.mjs → chunk-6W75IMDC.mjs} +3 -3
- package/dist/sdk/{chunk-XWJPT5KQ.mjs → chunk-7YSOINAQ.mjs} +392 -18
- package/dist/sdk/chunk-7YSOINAQ.mjs.map +1 -0
- package/dist/sdk/{chunk-3OMWVM6J.mjs → chunk-B7BVQM5K.mjs} +2 -2
- package/dist/sdk/chunk-BDGUM6BA.mjs +38825 -0
- package/dist/sdk/chunk-BDGUM6BA.mjs.map +1 -0
- package/dist/sdk/{chunk-VW2GBXQT.mjs → chunk-D5KI4YQ4.mjs} +3 -3
- package/dist/sdk/chunk-DGZPPGJJ.mjs +38825 -0
- package/dist/sdk/chunk-DGZPPGJJ.mjs.map +1 -0
- package/dist/sdk/chunk-H5BOW5CR.mjs +91 -0
- package/dist/sdk/chunk-H5BOW5CR.mjs.map +1 -0
- package/dist/sdk/{chunk-YSN4G6CI.mjs → chunk-HEX3RL32.mjs} +81 -3
- package/dist/sdk/{chunk-YSN4G6CI.mjs.map → chunk-HEX3RL32.mjs.map} +1 -1
- package/dist/sdk/{chunk-ZYAUYXSW.mjs → chunk-J5RGJQ53.mjs} +14 -3
- package/dist/sdk/{chunk-ZYAUYXSW.mjs.map → chunk-J5RGJQ53.mjs.map} +1 -1
- package/dist/sdk/{chunk-WMJKH4XE.mjs → chunk-J7LXIPZS.mjs} +16 -1
- package/dist/sdk/{chunk-EXFGO4FX.mjs → chunk-KFKHU6CM.mjs} +2 -2
- package/dist/sdk/{chunk-MPS4HVQI.mjs → chunk-N7HO6KKC.mjs} +8 -8
- package/dist/sdk/{chunk-O5EZDNYL.mjs → chunk-NCWIZVOT.mjs} +2 -2
- package/dist/sdk/{chunk-3NMLT3YS.mjs → chunk-PO7X5XI7.mjs} +3 -3
- package/dist/sdk/{chunk-BHOKBQPB.mjs → chunk-R5Z7YWPB.mjs} +5 -5
- package/dist/sdk/{chunk-EORMDOZU.mjs → chunk-SGS2VMEL.mjs} +7 -7
- package/dist/sdk/{chunk-BOVFH3LI.mjs → chunk-VF6XIUE4.mjs} +21 -10
- package/dist/sdk/chunk-VF6XIUE4.mjs.map +1 -0
- package/dist/sdk/{chunk-J2QWVDXK.mjs → chunk-XDLQ3UNF.mjs} +3 -3
- package/dist/sdk/{chunk-S2RUE2RG.mjs → chunk-XR7XXGL7.mjs} +3 -3
- package/dist/sdk/{chunk-NAW3DB3I.mjs → chunk-XXAEN5KU.mjs} +3 -3
- package/dist/sdk/command-executor-DVVXERLR.mjs +14 -0
- package/dist/sdk/config-7VTT64SQ.mjs +16 -0
- package/dist/sdk/config-merger-RKCZJQ44.mjs +10 -0
- package/dist/sdk/event-bus-5K3Y2FCS.mjs +43 -0
- package/dist/sdk/{event-bus-5BEVPQ6T.mjs.map → event-bus-5K3Y2FCS.mjs.map} +1 -1
- package/dist/sdk/failure-condition-evaluator-4WMDF4Q3.mjs +17 -0
- package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs +471 -0
- package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs.map +1 -0
- package/dist/sdk/{github-frontend-5PCKKHVC.mjs → github-frontend-3N2NLO66.mjs} +520 -588
- package/dist/sdk/github-frontend-3N2NLO66.mjs.map +1 -0
- package/dist/sdk/host-ONVMEHAA.mjs +63 -0
- package/dist/sdk/host-ONVMEHAA.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs → liquid-extensions-5IZLTFSZ.mjs} +8 -8
- package/dist/sdk/memory-store-3N4AZCYB.mjs +12 -0
- package/dist/sdk/{metrics-7PP3EJUH.mjs → metrics-GXQ2EDXA.mjs} +4 -4
- package/dist/sdk/ndjson-sink-FD2PSXGD.mjs +52 -0
- package/dist/sdk/{ndjson-sink-B4V4NTAQ.mjs.map → ndjson-sink-FD2PSXGD.mjs.map} +1 -1
- package/dist/sdk/{prompt-state-EZYOUG75.mjs → prompt-state-YHGXB2OA.mjs} +5 -5
- package/dist/sdk/{renderer-schema-CKFB5NDB.mjs → renderer-schema-CMXOLNIG.mjs} +4 -4
- package/dist/sdk/routing-S3Y7T2X3.mjs +24 -0
- package/dist/sdk/sdk.d.mts +212 -4
- package/dist/sdk/sdk.d.ts +212 -4
- package/dist/sdk/sdk.js +26927 -6264
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +23 -1278
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-6PV6SGEJ.mjs +10 -0
- package/dist/sdk/slack-frontend-R3M2CACB.mjs +899 -0
- package/dist/sdk/slack-frontend-R3M2CACB.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-VP6QYVBX.mjs → trace-helpers-YHNPC7MR.mjs} +4 -4
- package/dist/sdk/tracer-init-XPRWKMZT.mjs +10 -0
- package/dist/sdk/tui-frontend-S546M7A7.mjs +281 -0
- package/dist/sdk/tui-frontend-S546M7A7.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-4F3432ZP.mjs +28 -0
- package/dist/sdk/workflow-check-provider-A44PBPG2.mjs +28 -0
- package/dist/sdk/workflow-check-provider-A44PBPG2.mjs.map +1 -0
- package/dist/sdk/workflow-registry-ZAYYXLEP.mjs +12 -0
- package/dist/sdk/workflow-registry-ZAYYXLEP.mjs.map +1 -0
- package/dist/slack/client.d.ts +28 -0
- package/dist/slack/client.d.ts.map +1 -1
- package/dist/slack/schedule-tool-handler.d.ts +46 -0
- package/dist/slack/schedule-tool-handler.d.ts.map +1 -0
- package/dist/slack/slack-output-adapter.d.ts +44 -0
- package/dist/slack/slack-output-adapter.d.ts.map +1 -0
- package/dist/slack/socket-runner.d.ts +22 -0
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
- package/dist/state-machine/dispatch/sandbox-routing.d.ts +21 -0
- package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
- package/dist/state-machine-execution-engine.d.ts.map +1 -1
- package/dist/test-runner/index.d.ts +5 -0
- package/dist/test-runner/index.d.ts.map +1 -1
- package/dist/{output/traces/run-2026-02-01T09-59-08-165Z.ndjson → traces/run-2026-02-08T18-16-04-160Z.ndjson} +84 -84
- package/dist/{output/traces/run-2026-02-01T09-59-52-595Z.ndjson → traces/run-2026-02-08T18-16-51-253Z.ndjson} +1029 -1029
- package/dist/tui/chat-runner.d.ts +39 -0
- package/dist/tui/chat-runner.d.ts.map +1 -0
- package/dist/tui/chat-state.d.ts +56 -0
- package/dist/tui/chat-state.d.ts.map +1 -0
- package/dist/tui/chat-tui.d.ts +69 -0
- package/dist/tui/chat-tui.d.ts.map +1 -0
- package/dist/tui/components/chat-box.d.ts +33 -0
- package/dist/tui/components/chat-box.d.ts.map +1 -0
- package/dist/tui/components/input-bar.d.ts +50 -0
- package/dist/tui/components/input-bar.d.ts.map +1 -0
- package/dist/tui/components/status-bar.d.ts +31 -0
- package/dist/tui/components/status-bar.d.ts.map +1 -0
- package/dist/tui/components/trace-viewer.d.ts +73 -0
- package/dist/tui/components/trace-viewer.d.ts.map +1 -0
- package/dist/tui/index.d.ts +14 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/tui-frontend.d.ts +29 -0
- package/dist/tui/tui-frontend.d.ts.map +1 -0
- package/dist/types/bot.d.ts +35 -0
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/config.d.ts +152 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +3 -0
- package/dist/types/engine.d.ts.map +1 -1
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/dist/utils/workspace-manager.d.ts +22 -2
- package/dist/utils/workspace-manager.d.ts.map +1 -1
- package/dist/utils/worktree-manager.d.ts +2 -1
- package/dist/utils/worktree-manager.d.ts.map +1 -1
- package/package.json +4 -2
- package/dist/docs/NPM_USAGE.md +0 -281
- package/dist/generated/config-schema.json +0 -2161
- package/dist/sdk/check-provider-registry-CVUONJ5A.mjs +0 -28
- package/dist/sdk/chunk-BOVFH3LI.mjs.map +0 -1
- package/dist/sdk/chunk-TS6BUNAI.mjs +0 -17722
- package/dist/sdk/chunk-TS6BUNAI.mjs.map +0 -1
- package/dist/sdk/chunk-XWJPT5KQ.mjs.map +0 -1
- package/dist/sdk/command-executor-Q7MHJKZJ.mjs +0 -14
- package/dist/sdk/config-DXX64GD3.mjs +0 -16
- package/dist/sdk/config-merger-PX3WIT57.mjs +0 -10
- package/dist/sdk/event-bus-5BEVPQ6T.mjs +0 -35
- package/dist/sdk/failure-condition-evaluator-G4HMJPXF.mjs +0 -17
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +0 -458
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +0 -1
- package/dist/sdk/github-frontend-5PCKKHVC.mjs.map +0 -1
- package/dist/sdk/host-H3AWNZ2F.mjs +0 -52
- package/dist/sdk/host-H3AWNZ2F.mjs.map +0 -1
- package/dist/sdk/memory-store-RW5N2NGJ.mjs +0 -12
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +0 -44
- package/dist/sdk/routing-QHTGDIXF.mjs +0 -24
- package/dist/sdk/session-registry-4E6YRQ77.mjs +0 -10
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs +0 -821
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs.map +0 -1
- package/dist/sdk/tracer-init-GSLPPLCD.mjs +0 -10
- package/dist/sdk/workflow-check-provider-3IWBAZP7.mjs +0 -28
- package/dist/sdk/workflow-registry-KFWSDSLM.mjs +0 -12
- package/dist/tui.d.ts +0 -51
- package/dist/tui.d.ts.map +0 -1
- /package/dist/sdk/{check-provider-registry-CVUONJ5A.mjs.map → check-provider-registry-ACRGIYOB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-WMJKH4XE.mjs.map → check-provider-registry-VYHKFHK2.mjs.map} +0 -0
- /package/dist/sdk/{chunk-CNX7V5JK.mjs.map → chunk-25IC7KXZ.mjs.map} +0 -0
- /package/dist/sdk/{chunk-IHZOSIF4.mjs.map → chunk-2KB35MB7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-HQL734ZI.mjs.map → chunk-6W75IMDC.mjs.map} +0 -0
- /package/dist/sdk/{chunk-3OMWVM6J.mjs.map → chunk-B7BVQM5K.mjs.map} +0 -0
- /package/dist/sdk/{chunk-VW2GBXQT.mjs.map → chunk-D5KI4YQ4.mjs.map} +0 -0
- /package/dist/sdk/{command-executor-Q7MHJKZJ.mjs.map → chunk-J7LXIPZS.mjs.map} +0 -0
- /package/dist/sdk/{chunk-EXFGO4FX.mjs.map → chunk-KFKHU6CM.mjs.map} +0 -0
- /package/dist/sdk/{chunk-MPS4HVQI.mjs.map → chunk-N7HO6KKC.mjs.map} +0 -0
- /package/dist/sdk/{chunk-O5EZDNYL.mjs.map → chunk-NCWIZVOT.mjs.map} +0 -0
- /package/dist/sdk/{chunk-3NMLT3YS.mjs.map → chunk-PO7X5XI7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-BHOKBQPB.mjs.map → chunk-R5Z7YWPB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-EORMDOZU.mjs.map → chunk-SGS2VMEL.mjs.map} +0 -0
- /package/dist/sdk/{chunk-J2QWVDXK.mjs.map → chunk-XDLQ3UNF.mjs.map} +0 -0
- /package/dist/sdk/{chunk-S2RUE2RG.mjs.map → chunk-XR7XXGL7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-NAW3DB3I.mjs.map → chunk-XXAEN5KU.mjs.map} +0 -0
- /package/dist/sdk/{config-DXX64GD3.mjs.map → command-executor-DVVXERLR.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-PX3WIT57.mjs.map → config-7VTT64SQ.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-G4HMJPXF.mjs.map → config-merger-RKCZJQ44.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-I7O7KMHF.mjs.map → failure-condition-evaluator-4WMDF4Q3.mjs.map} +0 -0
- /package/dist/sdk/{memory-store-RW5N2NGJ.mjs.map → liquid-extensions-5IZLTFSZ.mjs.map} +0 -0
- /package/dist/sdk/{metrics-7PP3EJUH.mjs.map → memory-store-3N4AZCYB.mjs.map} +0 -0
- /package/dist/sdk/{prompt-state-EZYOUG75.mjs.map → metrics-GXQ2EDXA.mjs.map} +0 -0
- /package/dist/sdk/{routing-QHTGDIXF.mjs.map → prompt-state-YHGXB2OA.mjs.map} +0 -0
- /package/dist/sdk/{renderer-schema-CKFB5NDB.mjs.map → renderer-schema-CMXOLNIG.mjs.map} +0 -0
- /package/dist/sdk/{session-registry-4E6YRQ77.mjs.map → routing-S3Y7T2X3.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-VP6QYVBX.mjs.map → session-registry-6PV6SGEJ.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-GSLPPLCD.mjs.map → trace-helpers-YHNPC7MR.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-3IWBAZP7.mjs.map → tracer-init-XPRWKMZT.mjs.map} +0 -0
- /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
|
package/dist/docs/commands.md
CHANGED
|
@@ -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 /
|
|
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
|
|
package/dist/docs/debugging.md
CHANGED
|
@@ -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`.
|
package/dist/docs/index.md
CHANGED
|
@@ -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
|
---
|