@probelabs/visor 0.1.128 → 0.1.130-ee
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 +54 -1
- package/defaults/.visor.yaml +420 -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 +8 -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/author-permissions.md +20 -0
- package/dist/docs/debugging.md +133 -0
- package/dist/docs/dev-playbook.md +10 -0
- package/dist/docs/enterprise-policy.md +1325 -0
- package/dist/docs/index.md +11 -0
- package/dist/docs/scheduler-storage.md +433 -0
- package/dist/docs/scheduler.md +513 -0
- package/dist/docs/slack-integration.md +21 -0
- package/dist/docs/workflow-creation-guide.md +39 -0
- package/dist/enterprise/license/validator.d.ts +39 -0
- package/dist/enterprise/license/validator.d.ts.map +1 -0
- package/dist/enterprise/loader.d.ts +25 -0
- package/dist/enterprise/loader.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-compiler.d.ts +37 -0
- package/dist/enterprise/policy/opa-compiler.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-http-evaluator.d.ts +36 -0
- package/dist/enterprise/policy/opa-http-evaluator.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-policy-engine.d.ts +48 -0
- package/dist/enterprise/policy/opa-policy-engine.d.ts.map +1 -0
- package/dist/enterprise/policy/opa-wasm-evaluator.d.ts +34 -0
- package/dist/enterprise/policy/opa-wasm-evaluator.d.ts.map +1 -0
- package/dist/enterprise/policy/policy-input-builder.d.ts +120 -0
- package/dist/enterprise/policy/policy-input-builder.d.ts.map +1 -0
- package/dist/enterprise/scheduler/knex-store.d.ts +41 -0
- package/dist/enterprise/scheduler/knex-store.d.ts.map +1 -0
- package/dist/examples/README.md +53 -0
- package/dist/examples/calculator-config.yaml +4 -4
- package/dist/examples/enterprise-policy/README.md +344 -0
- package/dist/examples/enterprise-policy/policies/capability_resolve.rego +29 -0
- package/dist/examples/enterprise-policy/policies/capability_resolve_test.rego +230 -0
- package/dist/examples/enterprise-policy/policies/check_execute.rego +71 -0
- package/dist/examples/enterprise-policy/policies/check_execute_test.rego +321 -0
- package/dist/examples/enterprise-policy/policies/deploy_production.rego +33 -0
- package/dist/examples/enterprise-policy/policies/deploy_production_test.rego +29 -0
- package/dist/examples/enterprise-policy/policies/slack_channel_gate.rego +17 -0
- package/dist/examples/enterprise-policy/policies/slack_tool_restrict.rego +16 -0
- package/dist/examples/enterprise-policy/policies/tool_invoke.rego +24 -0
- package/dist/examples/enterprise-policy/policies/tool_invoke_test.rego +227 -0
- package/dist/examples/enterprise-policy/visor.yaml +64 -0
- 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/failure-condition-evaluator.d.ts +18 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/host.d.ts.map +1 -1
- package/dist/frontends/slack-frontend.d.ts +1 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +320 -6
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/index.js +15893 -1724
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/mcp-server.d.ts +8 -8
- package/dist/policy/default-engine.d.ts +17 -0
- package/dist/policy/default-engine.d.ts.map +1 -0
- package/dist/policy/index.d.ts +4 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/policy-check-command.d.ts +65 -0
- package/dist/policy/policy-check-command.d.ts.map +1 -0
- package/dist/policy/types.d.ts +81 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +7 -0
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/claude-code-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.map +1 -1
- 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/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 +16 -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 +156 -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 +216 -0
- package/dist/scheduler/scheduler.d.ts.map +1 -0
- package/dist/scheduler/store/index.d.ts +7 -0
- package/dist/scheduler/store/index.d.ts.map +1 -0
- package/dist/scheduler/store/json-migrator.d.ts +10 -0
- package/dist/scheduler/store/json-migrator.d.ts.map +1 -0
- package/dist/scheduler/store/sqlite-store.d.ts +32 -0
- package/dist/scheduler/store/sqlite-store.d.ts.map +1 -0
- package/dist/scheduler/store/types.d.ts +127 -0
- package/dist/scheduler/store/types.d.ts.map +1 -0
- package/dist/sdk/check-provider-registry-PANIXYRB.mjs +28 -0
- package/dist/sdk/check-provider-registry-S7DKTEM6.mjs +28 -0
- package/dist/sdk/{chunk-N7IVCCGH.mjs → chunk-DIND4ZCV.mjs} +2 -2
- package/dist/sdk/{chunk-SIMCSNXO.mjs → chunk-GEW6LS32.mjs} +2 -2
- package/dist/sdk/chunk-H5BOW5CR.mjs +91 -0
- package/dist/sdk/chunk-H5BOW5CR.mjs.map +1 -0
- package/dist/sdk/{chunk-UKG5UP5U.mjs → chunk-HOKQOO3G.mjs} +12 -7
- package/dist/sdk/chunk-HOKQOO3G.mjs.map +1 -0
- package/dist/sdk/{chunk-YCUWMIV5.mjs → chunk-JL7JXCET.mjs} +2 -2
- package/dist/sdk/{chunk-QRXSDDYN.mjs → chunk-LG4AUKHB.mjs} +2 -2
- package/dist/sdk/{chunk-UPKHRMUA.mjs → chunk-S6CD7GFM.mjs} +33449 -28837
- package/dist/sdk/chunk-S6CD7GFM.mjs.map +1 -0
- package/dist/sdk/{chunk-P6YFV6N2.mjs → chunk-SZXICFQ3.mjs} +2 -2
- package/dist/sdk/{chunk-V7RIRPO7.mjs → chunk-TQ4D3YOF.mjs} +33449 -28837
- package/dist/sdk/chunk-TQ4D3YOF.mjs.map +1 -0
- package/dist/sdk/{chunk-4HVFUUNB.mjs → chunk-UCMJJ3IM.mjs} +84 -3
- package/dist/sdk/{chunk-4HVFUUNB.mjs.map → chunk-UCMJJ3IM.mjs.map} +1 -1
- package/dist/sdk/{chunk-D55IQCUP.mjs → chunk-UCNT3PDT.mjs} +677 -12
- package/dist/sdk/chunk-UCNT3PDT.mjs.map +1 -0
- package/dist/sdk/{chunk-LMJSJQPP.mjs → chunk-V2IV3ILA.mjs} +8 -6
- package/dist/sdk/chunk-V2IV3ILA.mjs.map +1 -0
- package/dist/sdk/{chunk-EJN6Q4D3.mjs → chunk-VF6XIUE4.mjs} +6 -4
- package/dist/sdk/{chunk-EJN6Q4D3.mjs.map → chunk-VF6XIUE4.mjs.map} +1 -1
- package/dist/sdk/{chunk-VEROLBCD.mjs → chunk-VMLORODQ.mjs} +108 -21
- package/dist/sdk/chunk-VMLORODQ.mjs.map +1 -0
- package/dist/sdk/{chunk-UEWXVJ6C.mjs → chunk-VPC3QSPW.mjs} +2 -2
- package/dist/sdk/{chunk-WVNQ56DO.mjs → chunk-YJRBN3XS.mjs} +13 -2
- package/dist/sdk/{chunk-WVNQ56DO.mjs.map → chunk-YJRBN3XS.mjs.map} +1 -1
- package/dist/sdk/{command-executor-C4DGIQ4Q.mjs → command-executor-TOYBBE7S.mjs} +4 -4
- package/dist/sdk/{config-GYTBTHRZ.mjs → config-OGOS4ZU4.mjs} +5 -5
- package/dist/sdk/event-bus-5K3Y2FCS.mjs +43 -0
- package/dist/sdk/{event-bus-XV2TOQFU.mjs.map → event-bus-5K3Y2FCS.mjs.map} +1 -1
- package/dist/sdk/failure-condition-evaluator-HC3M5377.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-UC326PMS.mjs → github-frontend-E2KJSC3Y.mjs} +517 -585
- package/dist/sdk/github-frontend-E2KJSC3Y.mjs.map +1 -0
- package/dist/sdk/host-EE6EJ2FM.mjs +63 -0
- package/dist/sdk/host-EE6EJ2FM.mjs.map +1 -0
- package/dist/sdk/host-OUSD2OIQ.mjs +63 -0
- package/dist/sdk/host-OUSD2OIQ.mjs.map +1 -0
- package/dist/sdk/knex-store-HPXJILBL.mjs +411 -0
- package/dist/sdk/knex-store-HPXJILBL.mjs.map +1 -0
- package/dist/sdk/lazy-otel-5NH4ZJJM.mjs +24 -0
- package/dist/sdk/{liquid-extensions-WJAC7QKG.mjs → liquid-extensions-E4EUOCES.mjs} +6 -6
- package/dist/sdk/loader-ID5LMXOW.mjs +89 -0
- package/dist/sdk/loader-ID5LMXOW.mjs.map +1 -0
- package/dist/sdk/memory-store-AAPL2MTE.mjs +12 -0
- package/dist/sdk/{metrics-CSBGJEWW.mjs → metrics-I6A7IHG4.mjs} +3 -3
- package/dist/sdk/ndjson-sink-FD2PSXGD.mjs +52 -0
- package/dist/sdk/{ndjson-sink-JQ2INHTS.mjs.map → ndjson-sink-FD2PSXGD.mjs.map} +1 -1
- package/dist/sdk/opa-policy-engine-UUPFN5CL.mjs +655 -0
- package/dist/sdk/opa-policy-engine-UUPFN5CL.mjs.map +1 -0
- package/dist/sdk/{prompt-state-X2WDGSEM.mjs → prompt-state-VAKKC773.mjs} +4 -4
- package/dist/sdk/{renderer-schema-FRCLA6KH.mjs → renderer-schema-HXEW6BRJ.mjs} +3 -3
- package/dist/sdk/routing-OZQWAGAI.mjs +25 -0
- package/dist/sdk/schedule-tool-handler-B7TMSG6A.mjs +38 -0
- package/dist/sdk/schedule-tool-handler-EBNKDUJC.mjs +38 -0
- package/dist/sdk/sdk.d.mts +284 -4
- package/dist/sdk/sdk.d.ts +284 -4
- package/dist/sdk/sdk.js +8247 -2417
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +20 -1348
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/slack-frontend-LAY45IBR.mjs +989 -0
- package/dist/sdk/slack-frontend-LAY45IBR.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-LUCR52GY.mjs → trace-helpers-PP3YHTAM.mjs} +3 -3
- package/dist/sdk/tui-frontend-T56PZB67.mjs +290 -0
- package/dist/sdk/tui-frontend-T56PZB67.mjs.map +1 -0
- package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
- package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-E7YPEZ45.mjs +28 -0
- package/dist/sdk/workflow-check-provider-E7YPEZ45.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-HB4XTD4Z.mjs +28 -0
- package/dist/sdk/workflow-check-provider-HB4XTD4Z.mjs.map +1 -0
- package/dist/sdk/workflow-registry-AAD37XKZ.mjs +12 -0
- package/dist/sdk/workflow-registry-AAD37XKZ.mjs.map +1 -0
- package/dist/slack/client.d.ts +40 -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/policy-gate.d.ts +28 -0
- package/dist/state-machine/dispatch/policy-gate.d.ts.map +1 -0
- 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/states/routing.d.ts.map +1 -1
- package/dist/state-machine/states/wave-planning.d.ts.map +1 -1
- package/dist/state-machine-execution-engine.d.ts.map +1 -1
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
- package/dist/test-runner/index.d.ts.map +1 -1
- package/dist/test-runner/validator.d.ts.map +1 -1
- 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 +57 -0
- package/dist/tui/chat-state.d.ts.map +1 -0
- package/dist/tui/chat-tui.d.ts +70 -0
- package/dist/tui/chat-tui.d.ts.map +1 -0
- package/dist/tui/components/chat-box.d.ts +42 -0
- package/dist/tui/components/chat-box.d.ts.map +1 -0
- package/dist/tui/components/input-bar.d.ts +67 -0
- package/dist/tui/components/input-bar.d.ts.map +1 -0
- package/dist/tui/components/status-bar.d.ts +34 -0
- package/dist/tui/components/status-bar.d.ts.map +1 -0
- package/dist/tui/components/trace-viewer.d.ts +74 -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 +197 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +8 -0
- package/dist/types/engine.d.ts.map +1 -1
- package/dist/types/execution.d.ts +1 -1
- package/dist/types/execution.d.ts.map +1 -1
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/package.json +17 -5
- package/dist/docs/NPM_USAGE.md +0 -281
- package/dist/generated/config-schema.json +0 -2209
- package/dist/output/traces/run-2026-02-05T13-36-03-279Z.ndjson +0 -138
- package/dist/output/traces/run-2026-02-05T13-36-48-767Z.ndjson +0 -1137
- package/dist/output/traces/run-2026-02-05T13-36-58-960Z.ndjson +0 -17
- package/dist/output/traces/run-2026-02-05T13-37-00-184Z.ndjson +0 -205
- package/dist/sdk/check-provider-registry-OB5FEBJU.mjs +0 -28
- package/dist/sdk/check-provider-registry-UC2LPSB4.mjs +0 -28
- package/dist/sdk/chunk-D55IQCUP.mjs.map +0 -1
- package/dist/sdk/chunk-LMJSJQPP.mjs.map +0 -1
- package/dist/sdk/chunk-UKG5UP5U.mjs.map +0 -1
- package/dist/sdk/chunk-UPKHRMUA.mjs.map +0 -1
- package/dist/sdk/chunk-V7RIRPO7.mjs.map +0 -1
- package/dist/sdk/chunk-VEROLBCD.mjs.map +0 -1
- package/dist/sdk/event-bus-XV2TOQFU.mjs +0 -35
- package/dist/sdk/failure-condition-evaluator-KRFY4OLQ.mjs +0 -17
- package/dist/sdk/git-repository-analyzer-VO7OZMTM.mjs +0 -458
- package/dist/sdk/git-repository-analyzer-VO7OZMTM.mjs.map +0 -1
- package/dist/sdk/github-frontend-UC326PMS.mjs.map +0 -1
- package/dist/sdk/host-H7MKML2H.mjs +0 -52
- package/dist/sdk/host-H7MKML2H.mjs.map +0 -1
- package/dist/sdk/memory-store-LPOZWQ5E.mjs +0 -12
- package/dist/sdk/ndjson-sink-JQ2INHTS.mjs +0 -44
- package/dist/sdk/routing-745DOEKR.mjs +0 -24
- package/dist/sdk/slack-frontend-UPYUYCUQ.mjs +0 -821
- package/dist/sdk/slack-frontend-UPYUYCUQ.mjs.map +0 -1
- package/dist/sdk/workflow-check-provider-AA3VNYUY.mjs +0 -28
- package/dist/sdk/workflow-check-provider-LQNQZUN5.mjs +0 -28
- package/dist/sdk/workflow-registry-W7IEH7GK.mjs +0 -12
- package/dist/traces/run-2026-02-05T13-36-03-279Z.ndjson +0 -138
- package/dist/traces/run-2026-02-05T13-36-48-767Z.ndjson +0 -1137
- package/dist/traces/run-2026-02-05T13-36-58-960Z.ndjson +0 -17
- package/dist/traces/run-2026-02-05T13-37-00-184Z.ndjson +0 -205
- package/dist/tui.d.ts +0 -51
- package/dist/tui.d.ts.map +0 -1
- /package/dist/sdk/{check-provider-registry-OB5FEBJU.mjs.map → check-provider-registry-PANIXYRB.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-UC2LPSB4.mjs.map → check-provider-registry-S7DKTEM6.mjs.map} +0 -0
- /package/dist/sdk/{chunk-N7IVCCGH.mjs.map → chunk-DIND4ZCV.mjs.map} +0 -0
- /package/dist/sdk/{chunk-SIMCSNXO.mjs.map → chunk-GEW6LS32.mjs.map} +0 -0
- /package/dist/sdk/{chunk-YCUWMIV5.mjs.map → chunk-JL7JXCET.mjs.map} +0 -0
- /package/dist/sdk/{chunk-QRXSDDYN.mjs.map → chunk-LG4AUKHB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-P6YFV6N2.mjs.map → chunk-SZXICFQ3.mjs.map} +0 -0
- /package/dist/sdk/{chunk-UEWXVJ6C.mjs.map → chunk-VPC3QSPW.mjs.map} +0 -0
- /package/dist/sdk/{command-executor-C4DGIQ4Q.mjs.map → command-executor-TOYBBE7S.mjs.map} +0 -0
- /package/dist/sdk/{config-GYTBTHRZ.mjs.map → config-OGOS4ZU4.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-KRFY4OLQ.mjs.map → failure-condition-evaluator-HC3M5377.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-WJAC7QKG.mjs.map → lazy-otel-5NH4ZJJM.mjs.map} +0 -0
- /package/dist/sdk/{memory-store-LPOZWQ5E.mjs.map → liquid-extensions-E4EUOCES.mjs.map} +0 -0
- /package/dist/sdk/{metrics-CSBGJEWW.mjs.map → memory-store-AAPL2MTE.mjs.map} +0 -0
- /package/dist/sdk/{prompt-state-X2WDGSEM.mjs.map → metrics-I6A7IHG4.mjs.map} +0 -0
- /package/dist/sdk/{routing-745DOEKR.mjs.map → prompt-state-VAKKC773.mjs.map} +0 -0
- /package/dist/sdk/{renderer-schema-FRCLA6KH.mjs.map → renderer-schema-HXEW6BRJ.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-LUCR52GY.mjs.map → routing-OZQWAGAI.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-AA3VNYUY.mjs.map → schedule-tool-handler-B7TMSG6A.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-LQNQZUN5.mjs.map → schedule-tool-handler-EBNKDUJC.mjs.map} +0 -0
- /package/dist/sdk/{workflow-registry-W7IEH7GK.mjs.map → trace-helpers-PP3YHTAM.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -96,6 +96,9 @@ visor validate --config .visor.yaml # Validate specific config file
|
|
|
96
96
|
# Run all checks with a table output
|
|
97
97
|
visor --check all --output table
|
|
98
98
|
|
|
99
|
+
# Interactive TUI mode (chat-style interface for human-input workflows)
|
|
100
|
+
visor --tui --config ./my-workflow.yaml
|
|
101
|
+
|
|
99
102
|
# Filter by tags (e.g., fast/local) and increase parallelism
|
|
100
103
|
visor --tags fast,local --max-parallelism 5
|
|
101
104
|
|
|
@@ -112,14 +115,18 @@ visor --event all # Run all checks regardless of event filters (
|
|
|
112
115
|
# Emit machine‑readable results and save to a file
|
|
113
116
|
visor --check security --output json --output-file visor-results.json
|
|
114
117
|
|
|
118
|
+
# Visual debugger with web UI
|
|
119
|
+
visor --debug-server --debug-port 3456
|
|
120
|
+
|
|
115
121
|
# Discover options
|
|
116
122
|
visor --help
|
|
117
123
|
```
|
|
118
124
|
|
|
119
|
-
See full options
|
|
125
|
+
See full CLI options: [docs/commands.md](docs/commands.md)
|
|
120
126
|
|
|
121
127
|
Additional guides:
|
|
122
128
|
|
|
129
|
+
- debugging and local development (TUI, debug server): [docs/debugging.md](docs/debugging.md)
|
|
123
130
|
- fail conditions: [docs/fail-if.md](docs/fail-if.md)
|
|
124
131
|
- forEach behavior and dependent propagation (including outputs_raw and history precedence): [docs/foreach-dependency-propagation.md](docs/foreach-dependency-propagation.md)
|
|
125
132
|
- Failure routing and `on_finish` (with outputs_raw in routing JS): [docs/failure-routing.md](docs/failure-routing.md)
|
|
@@ -127,6 +134,7 @@ Additional guides:
|
|
|
127
134
|
- execution limits (run caps for safety): [docs/limits.md](docs/limits.md)
|
|
128
135
|
- output formatting limits and truncation controls: [docs/output-formatting.md](docs/output-formatting.md)
|
|
129
136
|
- live execution visualizer and control API: [docs/debug-visualizer.md](docs/debug-visualizer.md)
|
|
137
|
+
- scheduler for cron jobs and dynamic schedules: [docs/scheduler.md](docs/scheduler.md)
|
|
130
138
|
|
|
131
139
|
## 🧪 Integration Tests
|
|
132
140
|
|
|
@@ -178,6 +186,7 @@ Visor is a general SDLC automation framework:
|
|
|
178
186
|
- [Developer Experience Playbook](#-developer-experience-playbook)
|
|
179
187
|
- [Tag-Based Check Filtering](#-tag-based-check-filtering)
|
|
180
188
|
- [PR Comment Commands](#-pr-comment-commands)
|
|
189
|
+
- [Enterprise Policy Engine (EE)](#-enterprise-policy-engine-ee)
|
|
181
190
|
- [Suppressing Warnings](#-suppressing-warnings)
|
|
182
191
|
- [Troubleshooting](#-troubleshooting)
|
|
183
192
|
- [Security Defaults](#-security-defaults)
|
|
@@ -299,6 +308,28 @@ steps:
|
|
|
299
308
|
|
|
300
309
|
Learn more: [docs/author-permissions.md](docs/author-permissions.md)
|
|
301
310
|
|
|
311
|
+
## 🏢 Enterprise Policy Engine (EE)
|
|
312
|
+
|
|
313
|
+
> **Enterprise Edition feature.** Requires a Visor EE license. Contact **hello@probelabs.com**.
|
|
314
|
+
|
|
315
|
+
Add OPA-based role-based access control to gate checks, MCP tools, and AI capabilities using [Rego](https://www.openpolicyagent.org/docs/latest/policy-language/) policies.
|
|
316
|
+
|
|
317
|
+
```yaml
|
|
318
|
+
policy:
|
|
319
|
+
engine: local
|
|
320
|
+
rules: ./policies/
|
|
321
|
+
fallback: deny
|
|
322
|
+
roles:
|
|
323
|
+
admin:
|
|
324
|
+
author_association: [OWNER]
|
|
325
|
+
developer:
|
|
326
|
+
author_association: [MEMBER, COLLABORATOR]
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Checks denied by policy are skipped with reason `policy_denied`. Without a valid license, the engine silently disables and all checks run normally.
|
|
330
|
+
|
|
331
|
+
Learn more: [docs/enterprise-policy.md](docs/enterprise-policy.md) | [examples/enterprise-policy/](examples/enterprise-policy/)
|
|
332
|
+
|
|
302
333
|
## 🔇 Suppressing Warnings
|
|
303
334
|
|
|
304
335
|
Suppress a specific issue by adding a nearby `visor-disable` comment.
|
|
@@ -618,6 +649,28 @@ Learn more: [docs/sdk.md](docs/sdk.md)
|
|
|
618
649
|
|
|
619
650
|
Comprehensive debugging tools help troubleshoot configurations and data flows:
|
|
620
651
|
|
|
652
|
+
### Running Locally
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
# Basic CLI run
|
|
656
|
+
visor --config .visor.yaml --check all
|
|
657
|
+
|
|
658
|
+
# TUI mode - interactive chat interface for human-input workflows
|
|
659
|
+
visor --tui --config ./examples/calculator-config.yaml
|
|
660
|
+
|
|
661
|
+
# Debug server - web UI for stepping through execution
|
|
662
|
+
visor --debug-server --debug-port 3456
|
|
663
|
+
|
|
664
|
+
# Combine options for full visibility
|
|
665
|
+
visor --tui --config .visor.yaml --debug
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**TUI Mode Features:**
|
|
669
|
+
- Chat-style interface with persistent input bar
|
|
670
|
+
- Press `Tab` to switch between Chat and Logs tabs
|
|
671
|
+
- Re-run workflows by typing new messages after completion
|
|
672
|
+
- Press `q` to exit when done
|
|
673
|
+
|
|
621
674
|
### Quick Debugging Tips
|
|
622
675
|
|
|
623
676
|
**Use `log()` in JavaScript expressions:**
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/ai-review-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/ai-review-service.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"AAyxBA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAu1C1C"}
|
package/dist/config.d.ts
CHANGED
|
@@ -75,10 +75,18 @@ export declare class ConfigManager {
|
|
|
75
75
|
* @param strict If true, treat warnings as errors (default: false)
|
|
76
76
|
*/
|
|
77
77
|
validateConfig(config: Partial<VisorConfig>, strict?: boolean): void;
|
|
78
|
+
/**
|
|
79
|
+
* Validate sandbox configuration
|
|
80
|
+
*/
|
|
81
|
+
private validateSandboxConfig;
|
|
78
82
|
/**
|
|
79
83
|
* Validate individual check configuration
|
|
80
84
|
*/
|
|
81
85
|
private validateCheckConfig;
|
|
86
|
+
/**
|
|
87
|
+
* Validate policy engine configuration
|
|
88
|
+
*/
|
|
89
|
+
private validatePolicyConfig;
|
|
82
90
|
/**
|
|
83
91
|
* Validate MCP servers object shape and values (basic shape only)
|
|
84
92
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAGX,YAAY,EAIZ,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,YAAY,EAS9C,CAAC;AAEX;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAgBrB;IACF,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAA2D;IAEtF;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAqHvB;;;OAGG;IACU,oBAAoB,CAC/B,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,EACzB,OAAO,GAAE,iBAAiB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GACrD,OAAO,CAAC,WAAW,CAAC;IAkDvB;;OAEG;IACU,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IA4CrF;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgBrD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IA0FrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;OAGG;YACW,uBAAuB;IAkFrC;;OAEG;YACW,aAAa;IA6B3B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;;;OAIG;IACI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,UAAQ,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAGX,YAAY,EAIZ,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,YAAY,EAS9C,CAAC;AAEX;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAgBrB;IACF,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAA2D;IAEtF;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IAqHvB;;;OAGG;IACU,oBAAoB,CAC/B,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,EACzB,OAAO,GAAE,iBAAiB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GACrD,OAAO,CAAC,WAAW,CAAC;IAkDvB;;OAEG;IACU,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IA4CrF;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgBrD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IA0FrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;OAGG;YACW,uBAAuB;IAkFrC;;OAEG;YACW,aAAa;IA6B3B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;;;OAIG;IACI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,UAAQ,GAAG,IAAI;IA+SzE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoH7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8T3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmM5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAiG7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6DzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA6EhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA6B1B"}
|
package/dist/daemon.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const ScheduledTask = require('../scheduled-task');
|
|
2
|
+
|
|
3
|
+
let scheduledTask;
|
|
4
|
+
|
|
5
|
+
function register(message){
|
|
6
|
+
const script = require(message.path);
|
|
7
|
+
scheduledTask = new ScheduledTask(message.cron, script.task, message.options);
|
|
8
|
+
scheduledTask.on('task-done', (result) => {
|
|
9
|
+
process.send({ type: 'task-done', result});
|
|
10
|
+
});
|
|
11
|
+
process.send({ type: 'registred' });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
process.on('message', (message) => {
|
|
15
|
+
switch(message.type){
|
|
16
|
+
case 'register':
|
|
17
|
+
return register(message);
|
|
18
|
+
}
|
|
19
|
+
});
|