@probelabs/visor 0.1.106 → 0.1.107
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 +65 -2
- package/action.yml +1 -1
- package/defaults/code-refiner.yaml +114 -0
- package/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/defaults/override.yaml +52 -0
- package/defaults/task-refinement.yaml +620 -0
- package/defaults/visor.tests.yaml +674 -0
- package/defaults/visor.yaml +482 -0
- package/dist/663.index.js +2 -3
- package/dist/80.index.js +2 -3
- package/dist/action-cli-bridge.d.ts +11 -82
- package/dist/action-cli-bridge.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts +15 -0
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts +19 -331
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/cron-scheduler.d.ts +3 -3
- package/dist/cron-scheduler.d.ts.map +1 -1
- package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
- package/dist/defaults/code-refiner.yaml +114 -0
- package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/dist/defaults/override.yaml +52 -0
- package/dist/defaults/task-refinement.yaml +620 -0
- package/dist/defaults/visor.tests.yaml +674 -0
- package/dist/defaults/visor.yaml +482 -0
- package/dist/docs/DEPLOYMENT.md +118 -0
- package/dist/docs/GITHUB_CHECKS.md +280 -0
- package/dist/docs/NPM_USAGE.md +208 -0
- package/dist/docs/action-reference.md +19 -0
- package/dist/docs/advanced-ai.md +178 -0
- package/dist/docs/ai-configuration.md +468 -0
- package/dist/docs/author-permissions.md +610 -0
- package/dist/docs/ci-cli-mode.md +34 -0
- package/dist/docs/claude-code.md +74 -0
- package/dist/docs/command-provider.md +559 -0
- package/dist/docs/commands.md +8 -0
- package/dist/docs/configuration.md +303 -0
- package/dist/docs/custom-tools.md +424 -0
- package/dist/docs/dashboards/README.md +23 -0
- package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
- package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
- package/dist/docs/debug-visualizer-progress.md +572 -0
- package/dist/docs/debug-visualizer-rfc.md +691 -0
- package/dist/docs/debug-visualizer.md +114 -0
- package/dist/docs/debugging.md +636 -0
- package/dist/docs/default-output-schema.md +28 -0
- package/dist/docs/dependencies.md +369 -0
- package/dist/docs/dev-playbook.md +9 -0
- package/dist/docs/engine-state-machine-plan.md +333 -0
- package/dist/docs/event-driven-github-integration-rfc.md +743 -0
- package/dist/docs/event-triggers.md +292 -0
- package/dist/docs/execution-statistics-rfc.md +290 -0
- package/dist/docs/fact-validator-gap-analysis.md +178 -0
- package/dist/docs/fact-validator-implementation-plan.md +1235 -0
- package/dist/docs/fail-if.md +95 -0
- package/dist/docs/failure-conditions-implementation.md +271 -0
- package/dist/docs/failure-conditions-schema.md +173 -0
- package/dist/docs/failure-routing-rfc.md +193 -0
- package/dist/docs/failure-routing.md +507 -0
- package/dist/docs/foreach-dependency-propagation.md +473 -0
- package/dist/docs/github-ops.md +89 -0
- package/dist/docs/goto-forward-run-plan.md +113 -0
- package/dist/docs/guides/criticality-modes.md +332 -0
- package/dist/docs/guides/fault-management-and-contracts.md +738 -0
- package/dist/docs/guides/workflow-style-guide.md +224 -0
- package/dist/docs/http.md +299 -0
- package/dist/docs/human-input-provider.md +372 -0
- package/dist/docs/limits.md +64 -0
- package/dist/docs/liquid-templates.md +347 -0
- package/dist/docs/loop-routing-refactor.md +89 -0
- package/dist/docs/mcp-provider.md +557 -0
- package/dist/docs/mcp.md +124 -0
- package/dist/docs/memory.md +903 -0
- package/dist/docs/observability.md +12 -0
- package/dist/docs/output-formats.md +20 -0
- package/dist/docs/output-formatting.md +29 -0
- package/dist/docs/output-history.md +383 -0
- package/dist/docs/performance.md +6 -0
- package/dist/docs/pluggable.md +124 -0
- package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
- package/dist/docs/recipes.md +21 -0
- package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
- package/dist/docs/schema-next-pr.md +10 -0
- package/dist/docs/schema-templates.md +68 -0
- package/dist/docs/script.md +34 -0
- package/dist/docs/sdk.md +222 -0
- package/dist/docs/security.md +7 -0
- package/dist/docs/suppressions.md +89 -0
- package/dist/docs/tag-filtering.md +258 -0
- package/dist/docs/telemetry-setup.md +119 -0
- package/dist/docs/telemetry-tracing-rfc.md +275 -0
- package/dist/docs/test-framework-rfc.md +680 -0
- package/dist/docs/testing/assertions.md +85 -0
- package/dist/docs/testing/ci.md +44 -0
- package/dist/docs/testing/cli.md +41 -0
- package/dist/docs/testing/cookbook.md +172 -0
- package/dist/docs/testing/dsl-reference.md +199 -0
- package/dist/docs/testing/fixtures-and-mocks.md +91 -0
- package/dist/docs/testing/flows.md +92 -0
- package/dist/docs/testing/getting-started.md +93 -0
- package/dist/docs/testing/troubleshooting.md +55 -0
- package/dist/docs/timeouts.md +50 -0
- package/dist/docs/troubleshooting.md +7 -0
- package/dist/docs/visor-sdk-rfc.md +186 -0
- package/dist/docs/workflows.md +569 -0
- package/dist/engine/on-finish/orchestrator.d.ts +19 -0
- package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
- package/dist/engine/on-finish/utils.d.ts +44 -0
- package/dist/engine/on-finish/utils.d.ts.map +1 -0
- package/dist/event-bus/event-bus.d.ts +13 -0
- package/dist/event-bus/event-bus.d.ts.map +1 -0
- package/dist/event-bus/types.d.ts +57 -0
- package/dist/event-bus/types.d.ts.map +1 -0
- package/dist/examples/.claude/agents/code-reviewer.md +69 -0
- package/dist/examples/.mcp.json +34 -0
- package/dist/examples/CALCULATOR-SDK.md +364 -0
- package/dist/examples/README.md +384 -0
- package/dist/examples/ai-retry-fallback-config.yaml +180 -0
- package/dist/examples/ai-with-bash.yaml +126 -0
- package/dist/examples/ai-with-mcp.yaml +82 -0
- package/dist/examples/basic-human-input.yaml +15 -0
- package/dist/examples/bedrock-config.yaml +77 -0
- package/dist/examples/calculator-config.yaml +133 -0
- package/dist/examples/calculator-json-output-guide.md +311 -0
- package/dist/examples/calculator-sdk-automated.ts +340 -0
- package/dist/examples/calculator-sdk-example.ts +275 -0
- package/dist/examples/calculator-sdk-json.ts +331 -0
- package/dist/examples/calculator-sdk-real.ts +374 -0
- package/dist/examples/calculator-sdk-test.ts +148 -0
- package/dist/examples/claude-code-config.yaml +191 -0
- package/dist/examples/cron-webhook-config.yaml +215 -0
- package/dist/examples/custom-template.liquid +57 -0
- package/dist/examples/custom-tools-example.yaml +281 -0
- package/dist/examples/enhanced-config.yaml +165 -0
- package/dist/examples/environments/visor.base.yaml +92 -0
- package/dist/examples/environments/visor.dev.yaml +33 -0
- package/dist/examples/environments/visor.prod.yaml +95 -0
- package/dist/examples/environments/visor.staging.yaml +46 -0
- package/dist/examples/fact-validator.yaml +361 -0
- package/dist/examples/fail-if-simple.yaml +90 -0
- package/dist/examples/failure-conditions-advanced.yaml +136 -0
- package/dist/examples/failure-conditions-basic.yaml +48 -0
- package/dist/examples/failure-conditions-github-style.yaml +119 -0
- package/dist/examples/failure-conditions-migration.yaml +74 -0
- package/dist/examples/for-loop-example.yaml +176 -0
- package/dist/examples/forEach-example.yaml +120 -0
- package/dist/examples/github-workflow-with-tags.yml +163 -0
- package/dist/examples/http-integration-config.yaml +240 -0
- package/dist/examples/https-server-config.yaml +209 -0
- package/dist/examples/human-input-example.yaml +63 -0
- package/dist/examples/if-conditions.yaml +173 -0
- package/dist/examples/jira-simple-example.yaml +56 -0
- package/dist/examples/jira-single-issue-workflow.yaml +166 -0
- package/dist/examples/jira-workflow-mcp.yaml +182 -0
- package/dist/examples/mcp/analyzer.py +119 -0
- package/dist/examples/mcp-provider-example.yaml +301 -0
- package/dist/examples/memory-counter.yaml +99 -0
- package/dist/examples/memory-error-collection.yaml +104 -0
- package/dist/examples/memory-exec-js.yaml +247 -0
- package/dist/examples/memory-namespace-isolation.yaml +184 -0
- package/dist/examples/memory-retry-counter.yaml +65 -0
- package/dist/examples/memory-state-machine.yaml +170 -0
- package/dist/examples/outputs-raw-basic.yaml +26 -0
- package/dist/examples/project-with-tools.yaml +174 -0
- package/dist/examples/prompts/architecture-analysis.liquid +116 -0
- package/dist/examples/prompts/security-comprehensive.liquid +107 -0
- package/dist/examples/quick-start-tags.yaml +53 -0
- package/dist/examples/routing-basic.yaml +35 -0
- package/dist/examples/routing-dynamic-js.yaml +46 -0
- package/dist/examples/routing-foreach.yaml +34 -0
- package/dist/examples/routing-goto-event.yaml +34 -0
- package/dist/examples/routing-on-success.yaml +25 -0
- package/dist/examples/run-calculator-demo.sh +71 -0
- package/dist/examples/sdk-basic.mjs +10 -0
- package/dist/examples/sdk-cjs.cjs +10 -0
- package/dist/examples/sdk-comprehensive.mjs +175 -0
- package/dist/examples/sdk-manual-config.mjs +65 -0
- package/dist/examples/sdk-typescript.js +81 -0
- package/dist/examples/sdk-typescript.ts +92 -0
- package/dist/examples/session-reuse-config.yaml +151 -0
- package/dist/examples/templates/security-report.liquid +137 -0
- package/dist/examples/tools-library.yaml +281 -0
- package/dist/examples/transform-example.yaml +199 -0
- package/dist/examples/visor-with-tags.yaml +198 -0
- package/dist/examples/webhook-pipeline-config.yaml +218 -0
- package/dist/examples/workflows/calculator-workflow.yaml +163 -0
- package/dist/examples/workflows/code-quality.yaml +222 -0
- package/dist/examples/workflows/quick-pr-check.yaml +90 -0
- package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
- package/dist/failure-condition-evaluator.d.ts +1 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/github-frontend.d.ts +38 -0
- package/dist/frontends/github-frontend.d.ts.map +1 -0
- package/dist/frontends/host.d.ts +43 -0
- package/dist/frontends/host.d.ts.map +1 -0
- package/dist/frontends/ndjson-sink.d.ts +12 -0
- package/dist/frontends/ndjson-sink.d.ts.map +1 -0
- package/dist/generated/config-schema.d.ts +564 -22
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +612 -24
- package/dist/github-check-service.d.ts +4 -6
- package/dist/github-check-service.d.ts.map +1 -1
- package/dist/github-comments.d.ts +0 -4
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70335 -62514
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/memory-store.d.ts +6 -0
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/output/assistant-json/template.liquid +0 -0
- package/dist/output/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
- package/dist/output/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
- package/dist/output-formatters.d.ts +1 -1
- package/dist/output-formatters.d.ts.map +1 -1
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider-registry.d.ts +6 -0
- package/dist/providers/check-provider-registry.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +34 -1
- 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/command-check-provider.d.ts +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/custom-tool-executor.d.ts +61 -0
- package/dist/providers/custom-tool-executor.d.ts.map +1 -0
- package/dist/providers/github-ops-provider.d.ts.map +1 -1
- package/dist/providers/http-client-provider.d.ts +1 -4
- package/dist/providers/http-client-provider.d.ts.map +1 -1
- package/dist/providers/human-input-check-provider.d.ts +3 -0
- package/dist/providers/human-input-check-provider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/log-check-provider.d.ts +2 -5
- package/dist/providers/log-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts +9 -3
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/memory-check-provider.d.ts +2 -8
- package/dist/providers/memory-check-provider.d.ts.map +1 -1
- package/dist/providers/script-check-provider.d.ts +25 -0
- package/dist/providers/script-check-provider.d.ts.map +1 -0
- package/dist/providers/workflow-check-provider.d.ts +56 -0
- package/dist/providers/workflow-check-provider.d.ts.map +1 -0
- package/dist/reviewer.d.ts +2 -1
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/sdk/chunk-37ZSCMFC.mjs +482 -0
- package/dist/sdk/chunk-37ZSCMFC.mjs.map +1 -0
- package/dist/sdk/chunk-6Y4YTKCF.mjs +197 -0
- package/dist/sdk/chunk-6Y4YTKCF.mjs.map +1 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
- package/dist/sdk/chunk-IEO6CFLG.mjs +1215 -0
- package/dist/sdk/chunk-IEO6CFLG.mjs.map +1 -0
- package/dist/sdk/chunk-JEHPDJIF.mjs +223 -0
- package/dist/sdk/chunk-JEHPDJIF.mjs.map +1 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
- package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-OOZITMRU.mjs} +1 -1
- package/dist/sdk/chunk-OOZITMRU.mjs.map +1 -0
- package/dist/sdk/chunk-OWUVOILT.mjs +557 -0
- package/dist/sdk/chunk-OWUVOILT.mjs.map +1 -0
- package/dist/sdk/chunk-OZJ263FM.mjs +986 -0
- package/dist/sdk/chunk-OZJ263FM.mjs.map +1 -0
- package/dist/sdk/chunk-PTL3K3PN.mjs +3128 -0
- package/dist/sdk/chunk-PTL3K3PN.mjs.map +1 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
- package/dist/sdk/chunk-VMPLF6FT.mjs +127 -0
- package/dist/sdk/chunk-VMPLF6FT.mjs.map +1 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
- package/dist/sdk/config-M4ZNO6NU.mjs +14 -0
- package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
- package/dist/sdk/failure-condition-evaluator-NBO5YRXW.mjs +16 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
- package/dist/sdk/github-frontend-4AWRJT7D.mjs +1242 -0
- package/dist/sdk/github-frontend-4AWRJT7D.mjs.map +1 -0
- package/dist/sdk/host-7GBC3S7L.mjs +49 -0
- package/dist/sdk/host-7GBC3S7L.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-C7EG3YKH.mjs} +7 -2
- package/dist/sdk/memory-store-GJACZC2A.mjs +11 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
- package/dist/sdk/renderer-schema-6RF26VUS.mjs +50 -0
- package/dist/sdk/renderer-schema-6RF26VUS.mjs.map +1 -0
- package/dist/sdk/routing-RP56JTV2.mjs +23 -0
- package/dist/sdk/routing-RP56JTV2.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +326 -21
- package/dist/sdk/sdk.d.ts +326 -21
- package/dist/sdk/sdk.js +21403 -16366
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +13510 -2096
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-N5FFYFTM.mjs +10 -0
- package/dist/sdk/session-registry-N5FFYFTM.mjs.map +1 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
- package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-WP4X46IF.mjs} +2 -2
- package/dist/sdk/tracer-init-WP4X46IF.mjs.map +1 -0
- package/dist/sdk/workflow-registry-2YIIXQCK.mjs +11 -0
- package/dist/sdk/workflow-registry-2YIIXQCK.mjs.map +1 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/snapshot-store.d.ts +59 -0
- package/dist/snapshot-store.d.ts.map +1 -0
- package/dist/state-machine/context/build-engine-context.d.ts +9 -0
- package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
- package/dist/state-machine/execution/summary.d.ts +8 -0
- package/dist/state-machine/execution/summary.d.ts.map +1 -0
- package/dist/state-machine/runner.d.ts +73 -0
- package/dist/state-machine/runner.d.ts.map +1 -0
- package/dist/state-machine/states/check-running.d.ts +14 -0
- package/dist/state-machine/states/check-running.d.ts.map +1 -0
- package/dist/state-machine/states/completed.d.ts +12 -0
- package/dist/state-machine/states/completed.d.ts.map +1 -0
- package/dist/state-machine/states/error.d.ts +11 -0
- package/dist/state-machine/states/error.d.ts.map +1 -0
- package/dist/state-machine/states/init.d.ts +11 -0
- package/dist/state-machine/states/init.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts +17 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
- package/dist/state-machine/states/plan-ready.d.ts +12 -0
- package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
- package/dist/state-machine/states/routing.d.ts +52 -0
- package/dist/state-machine/states/routing.d.ts.map +1 -0
- package/dist/state-machine/states/wave-planning.d.ts +14 -0
- package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
- package/dist/state-machine/workflow-projection.d.ts +47 -0
- package/dist/state-machine/workflow-projection.d.ts.map +1 -0
- package/dist/state-machine-execution-engine.d.ts +147 -0
- package/dist/state-machine-execution-engine.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -1
- package/dist/test-runner/assertions.d.ts +59 -0
- package/dist/test-runner/assertions.d.ts.map +1 -0
- package/dist/test-runner/core/environment.d.ts +8 -0
- package/dist/test-runner/core/environment.d.ts.map +1 -0
- package/dist/test-runner/core/fixture.d.ts +3 -0
- package/dist/test-runner/core/fixture.d.ts.map +1 -0
- package/dist/test-runner/core/flow-stage.d.ts +32 -0
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
- package/dist/test-runner/core/mocks.d.ts +8 -0
- package/dist/test-runner/core/mocks.d.ts.map +1 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
- package/dist/test-runner/evaluators.d.ts +12 -0
- package/dist/test-runner/evaluators.d.ts.map +1 -0
- package/dist/test-runner/fixture-loader.d.ts +30 -0
- package/dist/test-runner/fixture-loader.d.ts.map +1 -0
- package/dist/test-runner/index.d.ts +120 -0
- package/dist/test-runner/index.d.ts.map +1 -0
- package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
- package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
- package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
- package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
- package/dist/test-runner/utils/selectors.d.ts +2 -0
- package/dist/test-runner/utils/selectors.d.ts.map +1 -0
- package/dist/test-runner/validator.d.ts +8 -0
- package/dist/test-runner/validator.d.ts.map +1 -0
- package/dist/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
- package/dist/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
- package/dist/types/cli.d.ts +4 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +278 -5
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +172 -0
- package/dist/types/engine.d.ts.map +1 -0
- package/dist/types/execution.d.ts +73 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/github.d.ts +51 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/workflow.d.ts +237 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/utils/command-executor.d.ts +43 -0
- package/dist/utils/command-executor.d.ts.map +1 -0
- package/dist/utils/comment-metadata.d.ts +21 -0
- package/dist/utils/comment-metadata.d.ts.map +1 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-merger.d.ts.map +1 -1
- package/dist/utils/env-exposure.d.ts +3 -0
- package/dist/utils/env-exposure.d.ts.map +1 -0
- package/dist/utils/file-exclusion.d.ts.map +1 -1
- package/dist/utils/interactive-prompt.d.ts +1 -1
- package/dist/utils/interactive-prompt.d.ts.map +1 -1
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/dist/utils/script-memory-ops.d.ts +21 -0
- package/dist/utils/script-memory-ops.d.ts.map +1 -0
- package/dist/utils/template-context.d.ts +7 -0
- package/dist/utils/template-context.d.ts.map +1 -0
- package/dist/webhook-server.d.ts +3 -3
- package/dist/webhook-server.d.ts.map +1 -1
- package/dist/workflow-executor.d.ts +81 -0
- package/dist/workflow-executor.d.ts.map +1 -0
- package/dist/workflow-registry.d.ts +79 -0
- package/dist/workflow-registry.d.ts.map +1 -0
- package/package.json +10 -5
- package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
- package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
- package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
- package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
- package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
- package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
- package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
- package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
- package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
- package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
- package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
- package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
- package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
- package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
- package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
- package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
- package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
- package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
- package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
- package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → config-M4ZNO6NU.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → failure-condition-evaluator-NBO5YRXW.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → liquid-extensions-C7EG3YKH.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → memory-store-GJACZC2A.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → metrics-7PP3EJUH.mjs.map} +0 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
|
|
3
|
+
# Custom Tool Definitions
|
|
4
|
+
# These tools can be used in any MCP block with transport: custom
|
|
5
|
+
tools:
|
|
6
|
+
# Simple grep tool for finding patterns in files
|
|
7
|
+
grep-pattern:
|
|
8
|
+
name: grep-pattern
|
|
9
|
+
description: Search for patterns in files using grep
|
|
10
|
+
inputSchema:
|
|
11
|
+
type: object
|
|
12
|
+
properties:
|
|
13
|
+
pattern:
|
|
14
|
+
type: string
|
|
15
|
+
description: Regular expression pattern to search for
|
|
16
|
+
files:
|
|
17
|
+
type: array
|
|
18
|
+
items:
|
|
19
|
+
type: string
|
|
20
|
+
description: List of files to search in
|
|
21
|
+
required: [pattern]
|
|
22
|
+
exec: 'grep -n "{{ args.pattern }}" {{ args.files | join: " " }}'
|
|
23
|
+
transform_js: |
|
|
24
|
+
// Parse grep output into structured format
|
|
25
|
+
const lines = output.trim().split('\n').filter(l => l);
|
|
26
|
+
return lines.map(line => {
|
|
27
|
+
const match = line.match(/^([^:]+):(\d+):(.*)$/);
|
|
28
|
+
if (!match) return null;
|
|
29
|
+
return {
|
|
30
|
+
file: match[1],
|
|
31
|
+
line: parseInt(match[2]),
|
|
32
|
+
content: match[3].trim()
|
|
33
|
+
};
|
|
34
|
+
}).filter(Boolean);
|
|
35
|
+
|
|
36
|
+
# Tool to count lines of code
|
|
37
|
+
count-lines:
|
|
38
|
+
name: count-lines
|
|
39
|
+
description: Count lines of code in files
|
|
40
|
+
inputSchema:
|
|
41
|
+
type: object
|
|
42
|
+
properties:
|
|
43
|
+
files:
|
|
44
|
+
type: array
|
|
45
|
+
items:
|
|
46
|
+
type: string
|
|
47
|
+
description: Files to count lines in
|
|
48
|
+
exclude_blank:
|
|
49
|
+
type: boolean
|
|
50
|
+
description: Exclude blank lines from count
|
|
51
|
+
exec: |
|
|
52
|
+
{% if args.exclude_blank %}
|
|
53
|
+
cat {{ args.files | join: " " }} | grep -v "^$" | wc -l
|
|
54
|
+
{% else %}
|
|
55
|
+
cat {{ args.files | join: " " }} | wc -l
|
|
56
|
+
{% endif %}
|
|
57
|
+
transform_js: 'return parseInt(output.trim());'
|
|
58
|
+
|
|
59
|
+
# Tool to check if a file contains sensitive data patterns
|
|
60
|
+
check-secrets:
|
|
61
|
+
name: check-secrets
|
|
62
|
+
description: Check for potential secrets in files
|
|
63
|
+
inputSchema:
|
|
64
|
+
type: object
|
|
65
|
+
properties:
|
|
66
|
+
file:
|
|
67
|
+
type: string
|
|
68
|
+
description: File to check
|
|
69
|
+
required: [file]
|
|
70
|
+
exec: |
|
|
71
|
+
grep -E "(api[_-]?key|secret|token|password|pwd|auth|credential)" -i "{{ args.file }}" || echo "No secrets found"
|
|
72
|
+
transform_js: |
|
|
73
|
+
if (output.includes("No secrets found")) {
|
|
74
|
+
return { safe: true, issues: [] };
|
|
75
|
+
}
|
|
76
|
+
const lines = output.trim().split('\n');
|
|
77
|
+
return {
|
|
78
|
+
safe: false,
|
|
79
|
+
issues: lines.map(line => ({
|
|
80
|
+
type: 'potential_secret',
|
|
81
|
+
content: line.substring(0, 100) // Truncate for safety
|
|
82
|
+
}))
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
# Tool to analyze code complexity
|
|
86
|
+
analyze-complexity:
|
|
87
|
+
name: analyze-complexity
|
|
88
|
+
description: Analyze code complexity metrics
|
|
89
|
+
inputSchema:
|
|
90
|
+
type: object
|
|
91
|
+
properties:
|
|
92
|
+
file:
|
|
93
|
+
type: string
|
|
94
|
+
description: Source code file to analyze
|
|
95
|
+
language:
|
|
96
|
+
type: string
|
|
97
|
+
description: Programming language (js, py, go, etc.)
|
|
98
|
+
required: [file]
|
|
99
|
+
exec: |
|
|
100
|
+
echo "Analyzing {{ args.file }}"
|
|
101
|
+
# Count functions/methods
|
|
102
|
+
{% if args.language == "js" or args.language == "ts" %}
|
|
103
|
+
grep -c "function\|=>" "{{ args.file }}" || echo "0"
|
|
104
|
+
{% elsif args.language == "py" %}
|
|
105
|
+
grep -c "def " "{{ args.file }}" || echo "0"
|
|
106
|
+
{% elsif args.language == "go" %}
|
|
107
|
+
grep -c "func " "{{ args.file }}" || echo "0"
|
|
108
|
+
{% else %}
|
|
109
|
+
echo "0"
|
|
110
|
+
{% endif %}
|
|
111
|
+
transform_js: |
|
|
112
|
+
const functionCount = parseInt(output.trim().split('\n').pop() || '0');
|
|
113
|
+
return {
|
|
114
|
+
file: args.file,
|
|
115
|
+
language: args.language || 'unknown',
|
|
116
|
+
metrics: {
|
|
117
|
+
functionCount: functionCount,
|
|
118
|
+
complexity: functionCount > 10 ? 'high' : functionCount > 5 ? 'medium' : 'low'
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
# Tool to validate JSON/YAML files
|
|
123
|
+
validate-config:
|
|
124
|
+
name: validate-config
|
|
125
|
+
description: Validate configuration file syntax
|
|
126
|
+
inputSchema:
|
|
127
|
+
type: object
|
|
128
|
+
properties:
|
|
129
|
+
file:
|
|
130
|
+
type: string
|
|
131
|
+
description: Configuration file to validate
|
|
132
|
+
type:
|
|
133
|
+
type: string
|
|
134
|
+
enum: [json, yaml]
|
|
135
|
+
description: File type to validate
|
|
136
|
+
required: [file, type]
|
|
137
|
+
exec: |
|
|
138
|
+
{% if args.type == "json" %}
|
|
139
|
+
python3 -m json.tool "{{ args.file }}" > /dev/null 2>&1 && echo "Valid JSON" || echo "Invalid JSON"
|
|
140
|
+
{% else %}
|
|
141
|
+
python3 -c "import yaml; yaml.safe_load(open('{{ args.file }}'))" 2>&1 && echo "Valid YAML" || echo "Invalid YAML"
|
|
142
|
+
{% endif %}
|
|
143
|
+
parseJson: false
|
|
144
|
+
transform_js: |
|
|
145
|
+
const isValid = output.includes("Valid");
|
|
146
|
+
return {
|
|
147
|
+
file: args.file,
|
|
148
|
+
type: args.type,
|
|
149
|
+
valid: isValid,
|
|
150
|
+
message: output.trim()
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
# Tool to generate file statistics
|
|
154
|
+
file-stats:
|
|
155
|
+
name: file-stats
|
|
156
|
+
description: Generate statistics about files
|
|
157
|
+
inputSchema:
|
|
158
|
+
type: object
|
|
159
|
+
properties:
|
|
160
|
+
pattern:
|
|
161
|
+
type: string
|
|
162
|
+
description: Glob pattern for files to analyze
|
|
163
|
+
exec: |
|
|
164
|
+
find . -name "{{ args.pattern }}" -type f | xargs wc -l | tail -1
|
|
165
|
+
transform_js: |
|
|
166
|
+
const parts = output.trim().split(/\s+/);
|
|
167
|
+
return {
|
|
168
|
+
totalLines: parseInt(parts[0] || '0'),
|
|
169
|
+
fileCount: Math.max(0, parts.length - 2) // Subtract total line
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
# Example usage of custom tools in checks
|
|
173
|
+
steps:
|
|
174
|
+
# Use custom tool to find TODO comments
|
|
175
|
+
find-todos:
|
|
176
|
+
type: mcp
|
|
177
|
+
transport: custom
|
|
178
|
+
method: grep-pattern
|
|
179
|
+
methodArgs:
|
|
180
|
+
pattern: "TODO|FIXME|HACK"
|
|
181
|
+
files: ["*.js", "*.ts", "*.py"]
|
|
182
|
+
transform_js: |
|
|
183
|
+
// Convert grep results to issues
|
|
184
|
+
output.map(match => ({
|
|
185
|
+
file: match.file,
|
|
186
|
+
line: match.line,
|
|
187
|
+
message: `Found comment: ${match.content}`,
|
|
188
|
+
severity: match.content.includes('FIXME') ? 'warning' : 'info',
|
|
189
|
+
category: 'documentation',
|
|
190
|
+
ruleId: 'todo-comment'
|
|
191
|
+
}))
|
|
192
|
+
|
|
193
|
+
# Check for secrets using custom tool
|
|
194
|
+
security-check:
|
|
195
|
+
type: mcp
|
|
196
|
+
transport: custom
|
|
197
|
+
method: check-secrets
|
|
198
|
+
forEach: "{{ files | map: 'filename' }}"
|
|
199
|
+
methodArgs:
|
|
200
|
+
file: "{{ item }}"
|
|
201
|
+
transform_js: |
|
|
202
|
+
if (!output.safe) {
|
|
203
|
+
return output.issues.map(issue => ({
|
|
204
|
+
file: args.file,
|
|
205
|
+
line: 0,
|
|
206
|
+
message: `Potential secret detected: ${issue.type}`,
|
|
207
|
+
severity: 'critical',
|
|
208
|
+
category: 'security',
|
|
209
|
+
ruleId: 'potential-secret'
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
return [];
|
|
213
|
+
|
|
214
|
+
# Analyze code complexity
|
|
215
|
+
complexity-analysis:
|
|
216
|
+
type: mcp
|
|
217
|
+
transport: custom
|
|
218
|
+
method: analyze-complexity
|
|
219
|
+
forEach: "{{ files | where: 'filename', 'endsWith', '.js' }}"
|
|
220
|
+
methodArgs:
|
|
221
|
+
file: "{{ item.filename }}"
|
|
222
|
+
language: "js"
|
|
223
|
+
transform_js: |
|
|
224
|
+
const complexity = output.metrics.complexity;
|
|
225
|
+
if (complexity === 'high') {
|
|
226
|
+
return [{
|
|
227
|
+
file: output.file,
|
|
228
|
+
line: 0,
|
|
229
|
+
message: `High complexity detected: ${output.metrics.functionCount} functions`,
|
|
230
|
+
severity: 'warning',
|
|
231
|
+
category: 'performance',
|
|
232
|
+
ruleId: 'high-complexity'
|
|
233
|
+
}];
|
|
234
|
+
}
|
|
235
|
+
return [];
|
|
236
|
+
|
|
237
|
+
# Validate all JSON config files
|
|
238
|
+
validate-json-configs:
|
|
239
|
+
type: mcp
|
|
240
|
+
transport: custom
|
|
241
|
+
method: validate-config
|
|
242
|
+
forEach: "{{ files | where: 'filename', 'endsWith', '.json' }}"
|
|
243
|
+
methodArgs:
|
|
244
|
+
file: "{{ item.filename }}"
|
|
245
|
+
type: "json"
|
|
246
|
+
fail_if: "!output.valid"
|
|
247
|
+
transform_js: |
|
|
248
|
+
if (!output.valid) {
|
|
249
|
+
return [{
|
|
250
|
+
file: output.file,
|
|
251
|
+
line: 0,
|
|
252
|
+
message: output.message,
|
|
253
|
+
severity: 'error',
|
|
254
|
+
category: 'style',
|
|
255
|
+
ruleId: 'invalid-json'
|
|
256
|
+
}];
|
|
257
|
+
}
|
|
258
|
+
return [];
|
|
259
|
+
|
|
260
|
+
# Get repository statistics
|
|
261
|
+
repo-stats:
|
|
262
|
+
type: mcp
|
|
263
|
+
transport: custom
|
|
264
|
+
method: file-stats
|
|
265
|
+
methodArgs:
|
|
266
|
+
pattern: "*.{js,ts,py,go}"
|
|
267
|
+
transform_js: |
|
|
268
|
+
// Create informational message about repo size
|
|
269
|
+
[{
|
|
270
|
+
file: 'repository',
|
|
271
|
+
line: 0,
|
|
272
|
+
message: `Repository contains ${output.fileCount} source files with ${output.totalLines} total lines`,
|
|
273
|
+
severity: 'info',
|
|
274
|
+
category: 'documentation',
|
|
275
|
+
ruleId: 'repo-stats'
|
|
276
|
+
}]
|
|
277
|
+
|
|
278
|
+
# Output configuration
|
|
279
|
+
output:
|
|
280
|
+
format: table
|
|
281
|
+
groupBy: severity
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
|
|
3
|
+
steps:
|
|
4
|
+
# Security check using comprehensive liquid template
|
|
5
|
+
security-enhanced:
|
|
6
|
+
type: ai
|
|
7
|
+
group: security-analysis
|
|
8
|
+
schema: code-review
|
|
9
|
+
prompt:
|
|
10
|
+
file: "./examples/prompts/security-comprehensive.liquid"
|
|
11
|
+
template:
|
|
12
|
+
file: "./examples/templates/security-report.liquid"
|
|
13
|
+
on: [pr_opened, pr_updated]
|
|
14
|
+
ai:
|
|
15
|
+
provider: anthropic
|
|
16
|
+
model: claude-3-5-sonnet-20241022
|
|
17
|
+
|
|
18
|
+
# Architecture analysis with dependency on security
|
|
19
|
+
architecture:
|
|
20
|
+
type: ai
|
|
21
|
+
group: architecture-review
|
|
22
|
+
schema: plain
|
|
23
|
+
depends_on: [security-enhanced]
|
|
24
|
+
prompt:
|
|
25
|
+
file: "./examples/prompts/architecture-analysis.liquid"
|
|
26
|
+
on: [pr_opened]
|
|
27
|
+
ai:
|
|
28
|
+
timeout: 300000 # 5 minutes for complex analysis
|
|
29
|
+
|
|
30
|
+
# Performance check with inline liquid template
|
|
31
|
+
performance-context:
|
|
32
|
+
type: ai
|
|
33
|
+
group: code-review
|
|
34
|
+
schema: code-review
|
|
35
|
+
prompt:
|
|
36
|
+
content: |
|
|
37
|
+
# Performance Analysis for PR {{ pr.number }}
|
|
38
|
+
|
|
39
|
+
{% if pr.isIncremental %}
|
|
40
|
+
## Incremental Analysis
|
|
41
|
+
Analyzing only the latest commit changes.
|
|
42
|
+
{% else %}
|
|
43
|
+
## Full PR Analysis
|
|
44
|
+
Analyzing all changes in this pull request.
|
|
45
|
+
{% endif %}
|
|
46
|
+
|
|
47
|
+
## Files to Analyze
|
|
48
|
+
{% for ext, files in utils.filesByExtension %}
|
|
49
|
+
### {{ ext | upcase }} Files ({{ files.size }})
|
|
50
|
+
{% for file in files %}
|
|
51
|
+
- `{{ file.filename }}` ({{ file.status }}, {{ file.changes }} changes)
|
|
52
|
+
{% endfor %}
|
|
53
|
+
{% endfor %}
|
|
54
|
+
|
|
55
|
+
{% if utils.hasLargeChanges %}
|
|
56
|
+
⚠️ **Note**: Large changes detected - pay extra attention to performance implications.
|
|
57
|
+
{% endif %}
|
|
58
|
+
|
|
59
|
+
## Previous Security Context
|
|
60
|
+
{% if outputs.security-enhanced %}
|
|
61
|
+
Security analysis found {{ outputs.security-enhanced.totalIssues }} issues.
|
|
62
|
+
{% if outputs.security-enhanced.criticalIssues > 0 %}
|
|
63
|
+
Consider performance impact of security fixes needed for {{ outputs.security-enhanced.criticalIssues }} critical issues.
|
|
64
|
+
{% endif %}
|
|
65
|
+
{% endif %}
|
|
66
|
+
|
|
67
|
+
## Focus Areas
|
|
68
|
+
Please analyze for performance issues including:
|
|
69
|
+
- Algorithm complexity and efficiency
|
|
70
|
+
- Database query optimization (N+1 queries, missing indexes)
|
|
71
|
+
- Memory usage patterns and potential leaks
|
|
72
|
+
- Async/await usage and blocking operations
|
|
73
|
+
- Bundle size impact for frontend changes
|
|
74
|
+
- API response time implications
|
|
75
|
+
|
|
76
|
+
Return results in JSON format matching the code-review schema.
|
|
77
|
+
on: [pr_opened, pr_updated]
|
|
78
|
+
depends_on: [security-enhanced]
|
|
79
|
+
|
|
80
|
+
# Event-aware overview using all available context
|
|
81
|
+
pr-overview:
|
|
82
|
+
type: ai
|
|
83
|
+
group: pr-summary
|
|
84
|
+
schema: plain
|
|
85
|
+
depends_on: [security-enhanced, performance-context]
|
|
86
|
+
prompt:
|
|
87
|
+
content: |
|
|
88
|
+
# 📋 Pull Request Overview: {{ pr.title }}
|
|
89
|
+
|
|
90
|
+
{% if event.comment %}
|
|
91
|
+
**Triggered by**: {{ event.comment.author }} commented "{{ event.comment.body }}"
|
|
92
|
+
{% endif %}
|
|
93
|
+
|
|
94
|
+
## Summary
|
|
95
|
+
- **Repository**: {{ event.repository.fullName }}
|
|
96
|
+
- **Author**: {{ pr.author }}
|
|
97
|
+
- **Branch**: `{{ pr.headBranch }}` → `{{ pr.baseBranch }}`
|
|
98
|
+
- **Files**: {{ files.size }} files changed
|
|
99
|
+
- **Scope**: {{ pr.totalAdditions }} additions, {{ pr.totalDeletions }} deletions
|
|
100
|
+
|
|
101
|
+
## Analysis Results Summary
|
|
102
|
+
|
|
103
|
+
{% if outputs.security-enhanced %}
|
|
104
|
+
### 🔒 Security Analysis
|
|
105
|
+
- **Total Issues**: {{ outputs.security-enhanced.totalIssues }}
|
|
106
|
+
{% if outputs.security-enhanced.criticalIssues > 0 %}
|
|
107
|
+
- **🚨 Critical Issues**: {{ outputs.security-enhanced.criticalIssues }} requiring immediate attention
|
|
108
|
+
{% endif %}
|
|
109
|
+
{% if outputs.security-enhanced.errorIssues > 0 %}
|
|
110
|
+
- **❌ Errors**: {{ outputs.security-enhanced.errorIssues }}
|
|
111
|
+
{% endif %}
|
|
112
|
+
{% if outputs.security-enhanced.warningIssues > 0 %}
|
|
113
|
+
- **⚠️ Warnings**: {{ outputs.security-enhanced.warningIssues }}
|
|
114
|
+
{% endif %}
|
|
115
|
+
{% endif %}
|
|
116
|
+
|
|
117
|
+
{% if outputs.performance-context %}
|
|
118
|
+
### ⚡ Performance Analysis
|
|
119
|
+
- **Total Issues**: {{ outputs.performance-context.totalIssues }}
|
|
120
|
+
{% if outputs.performance-context.errorIssues > 0 %}
|
|
121
|
+
- **Performance Errors**: {{ outputs.performance-context.errorIssues }}
|
|
122
|
+
{% endif %}
|
|
123
|
+
{% if outputs.performance-context.warningIssues > 0 %}
|
|
124
|
+
- **Performance Warnings**: {{ outputs.performance-context.warningIssues }}
|
|
125
|
+
{% endif %}
|
|
126
|
+
{% endif %}
|
|
127
|
+
|
|
128
|
+
## Files Changed
|
|
129
|
+
|
|
130
|
+
| File | Type | Status | Changes |
|
|
131
|
+
|------|------|--------|---------|
|
|
132
|
+
{% for file in files %}
|
|
133
|
+
| `{{ file.filename }}` | {{ file.filename | split: "." | last | upcase }} | {{ file.status }} | +{{ file.additions }}/-{{ file.deletions }} |
|
|
134
|
+
{% endfor %}
|
|
135
|
+
|
|
136
|
+
## Architecture Impact
|
|
137
|
+
|
|
138
|
+
{% if utils.hasLargeChanges %}
|
|
139
|
+
⚠️ **Large Changes**: This PR contains significant modifications that may impact system architecture.
|
|
140
|
+
{% endif %}
|
|
141
|
+
|
|
142
|
+
Generate a comprehensive overview including:
|
|
143
|
+
1. **Change Summary**: What this PR accomplishes
|
|
144
|
+
2. **Technical Impact**: How it affects the system
|
|
145
|
+
3. **Risk Assessment**: Potential concerns based on analysis results
|
|
146
|
+
4. **Recommendation**: Overall assessment and next steps
|
|
147
|
+
|
|
148
|
+
{% if utils.filesByExtension.size > 3 %}
|
|
149
|
+
Note: Multiple file types modified - consider cross-language compatibility.
|
|
150
|
+
{% endif %}
|
|
151
|
+
|
|
152
|
+
Please provide a markdown overview focusing on the business and technical impact of these changes.
|
|
153
|
+
on: [pr_opened, pr_updated]
|
|
154
|
+
|
|
155
|
+
output:
|
|
156
|
+
pr_comment:
|
|
157
|
+
format: markdown
|
|
158
|
+
group_by: check
|
|
159
|
+
collapse: true
|
|
160
|
+
debug:
|
|
161
|
+
enabled: false
|
|
162
|
+
includePrompts: false
|
|
163
|
+
includeRawResponses: false
|
|
164
|
+
includeTiming: true
|
|
165
|
+
includeProviderInfo: true
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Base Visor Configuration
|
|
2
|
+
# This file contains all check definitions that environments can filter using tags
|
|
3
|
+
|
|
4
|
+
version: "1.0"
|
|
5
|
+
|
|
6
|
+
# Default AI settings (can be overridden)
|
|
7
|
+
ai_provider: google
|
|
8
|
+
ai_model: gemini-1.5-flash
|
|
9
|
+
|
|
10
|
+
# All available checks with comprehensive tagging
|
|
11
|
+
steps:
|
|
12
|
+
# ====================
|
|
13
|
+
# Security Checks
|
|
14
|
+
# ====================
|
|
15
|
+
security-basic:
|
|
16
|
+
type: ai
|
|
17
|
+
group: security
|
|
18
|
+
prompt: "Basic security scan for common vulnerabilities"
|
|
19
|
+
tags: ["security", "basic", "fast", "dev", "staging", "prod"]
|
|
20
|
+
on: [pr_opened, pr_updated]
|
|
21
|
+
|
|
22
|
+
security-advanced:
|
|
23
|
+
type: ai
|
|
24
|
+
group: security
|
|
25
|
+
prompt: "Advanced security audit with threat modeling"
|
|
26
|
+
tags: ["security", "advanced", "slow", "staging", "prod"]
|
|
27
|
+
on: [pr_opened]
|
|
28
|
+
|
|
29
|
+
security-experimental:
|
|
30
|
+
type: ai
|
|
31
|
+
group: security
|
|
32
|
+
prompt: "Experimental AI-powered vulnerability prediction"
|
|
33
|
+
tags: ["security", "experimental", "dev"]
|
|
34
|
+
on: [manual]
|
|
35
|
+
|
|
36
|
+
# ====================
|
|
37
|
+
# Performance Checks
|
|
38
|
+
# ====================
|
|
39
|
+
perf-basic:
|
|
40
|
+
type: ai
|
|
41
|
+
group: performance
|
|
42
|
+
prompt: "Basic performance analysis"
|
|
43
|
+
tags: ["performance", "basic", "fast", "dev", "staging", "prod"]
|
|
44
|
+
on: [pr_opened, pr_updated]
|
|
45
|
+
|
|
46
|
+
perf-load-testing:
|
|
47
|
+
type: command
|
|
48
|
+
group: performance
|
|
49
|
+
exec: "npm run test:load"
|
|
50
|
+
tags: ["performance", "load-testing", "slow", "staging"]
|
|
51
|
+
on: [pr_opened]
|
|
52
|
+
|
|
53
|
+
# ====================
|
|
54
|
+
# Quality Checks
|
|
55
|
+
# ====================
|
|
56
|
+
lint:
|
|
57
|
+
type: command
|
|
58
|
+
group: quality
|
|
59
|
+
exec: "npm run lint"
|
|
60
|
+
tags: ["quality", "lint", "fast", "dev", "staging", "prod"]
|
|
61
|
+
on: [pr_opened, pr_updated]
|
|
62
|
+
|
|
63
|
+
test-unit:
|
|
64
|
+
type: command
|
|
65
|
+
group: quality
|
|
66
|
+
exec: "npm test"
|
|
67
|
+
tags: ["quality", "testing", "fast", "dev", "staging", "prod"]
|
|
68
|
+
on: [pr_opened, pr_updated]
|
|
69
|
+
|
|
70
|
+
test-integration:
|
|
71
|
+
type: command
|
|
72
|
+
group: quality
|
|
73
|
+
exec: "npm run test:integration"
|
|
74
|
+
tags: ["quality", "testing", "slow", "staging", "prod"]
|
|
75
|
+
on: [pr_opened]
|
|
76
|
+
|
|
77
|
+
# ====================
|
|
78
|
+
# Documentation
|
|
79
|
+
# ====================
|
|
80
|
+
docs-check:
|
|
81
|
+
type: ai
|
|
82
|
+
group: docs
|
|
83
|
+
prompt: "Check documentation completeness and accuracy"
|
|
84
|
+
tags: ["documentation", "optional", "dev", "staging"]
|
|
85
|
+
on: [pr_opened, pr_updated]
|
|
86
|
+
|
|
87
|
+
# Output settings
|
|
88
|
+
output:
|
|
89
|
+
pr_comment:
|
|
90
|
+
format: markdown
|
|
91
|
+
group_by: group
|
|
92
|
+
collapse: true
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Development Environment Configuration
|
|
2
|
+
# Fast feedback for local development
|
|
3
|
+
|
|
4
|
+
version: "1.0"
|
|
5
|
+
|
|
6
|
+
# Inherit all checks from base
|
|
7
|
+
extends: ./visor.base.yaml
|
|
8
|
+
|
|
9
|
+
# Filter to only dev-appropriate checks
|
|
10
|
+
tag_filter:
|
|
11
|
+
include:
|
|
12
|
+
- dev
|
|
13
|
+
- fast
|
|
14
|
+
- basic
|
|
15
|
+
exclude:
|
|
16
|
+
- slow
|
|
17
|
+
- experimental
|
|
18
|
+
- staging
|
|
19
|
+
- prod
|
|
20
|
+
|
|
21
|
+
# Use faster AI model for dev
|
|
22
|
+
ai_model: gemini-1.5-flash
|
|
23
|
+
|
|
24
|
+
# Dev-specific settings
|
|
25
|
+
max_parallelism: 5 # Run checks faster locally
|
|
26
|
+
fail_fast: true # Stop on first error for quick feedback
|
|
27
|
+
|
|
28
|
+
# Override output for dev
|
|
29
|
+
output:
|
|
30
|
+
pr_comment:
|
|
31
|
+
format: table # Simpler format for terminal
|
|
32
|
+
group_by: check
|
|
33
|
+
collapse: false # Show all details
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Production Environment Configuration
|
|
2
|
+
# Comprehensive checks for production deployments
|
|
3
|
+
|
|
4
|
+
version: "1.0"
|
|
5
|
+
|
|
6
|
+
# Inherit all checks from base
|
|
7
|
+
extends: ./visor.base.yaml
|
|
8
|
+
|
|
9
|
+
# Filter for production-critical checks
|
|
10
|
+
tag_filter:
|
|
11
|
+
include:
|
|
12
|
+
- prod
|
|
13
|
+
- security
|
|
14
|
+
- performance
|
|
15
|
+
- quality
|
|
16
|
+
exclude:
|
|
17
|
+
- experimental
|
|
18
|
+
- dev
|
|
19
|
+
- optional
|
|
20
|
+
|
|
21
|
+
# Use most capable AI model for production
|
|
22
|
+
ai_provider: google
|
|
23
|
+
ai_model: gemini-1.5-pro # Or claude-3-opus for Anthropic
|
|
24
|
+
|
|
25
|
+
# Production-specific settings
|
|
26
|
+
max_parallelism: 1 # Sequential for consistency
|
|
27
|
+
fail_fast: true # Stop on critical issues
|
|
28
|
+
fail_if: "output.issues.some(i => i.severity === 'critical')"
|
|
29
|
+
|
|
30
|
+
# Add production-specific validations
|
|
31
|
+
steps:
|
|
32
|
+
prod-security-audit:
|
|
33
|
+
type: ai
|
|
34
|
+
group: production
|
|
35
|
+
prompt: |
|
|
36
|
+
Production security audit:
|
|
37
|
+
- Verify no sensitive data in code
|
|
38
|
+
- Check for secure communication protocols
|
|
39
|
+
- Validate authentication mechanisms
|
|
40
|
+
- Ensure proper error handling
|
|
41
|
+
- Check for rate limiting
|
|
42
|
+
tags: ["prod", "security", "critical"]
|
|
43
|
+
on: [pr_opened]
|
|
44
|
+
depends_on: [security-basic, security-advanced]
|
|
45
|
+
|
|
46
|
+
prod-performance-validation:
|
|
47
|
+
type: ai
|
|
48
|
+
group: production
|
|
49
|
+
prompt: |
|
|
50
|
+
Production performance validation:
|
|
51
|
+
- Verify resource limits are appropriate
|
|
52
|
+
- Check for potential memory leaks
|
|
53
|
+
- Validate caching strategies
|
|
54
|
+
- Ensure database query optimization
|
|
55
|
+
tags: ["prod", "performance", "critical"]
|
|
56
|
+
on: [pr_opened]
|
|
57
|
+
depends_on: [perf-basic]
|
|
58
|
+
|
|
59
|
+
prod-rollback-plan:
|
|
60
|
+
type: ai
|
|
61
|
+
group: production
|
|
62
|
+
prompt: "Verify rollback plan is documented and tested"
|
|
63
|
+
tags: ["prod", "deployment", "critical"]
|
|
64
|
+
on: [pr_opened]
|
|
65
|
+
|
|
66
|
+
# Production output configuration
|
|
67
|
+
output:
|
|
68
|
+
pr_comment:
|
|
69
|
+
format: markdown
|
|
70
|
+
group_by: group
|
|
71
|
+
collapse: false # Show everything for production
|
|
72
|
+
|
|
73
|
+
github_checks:
|
|
74
|
+
enabled: true
|
|
75
|
+
per_check: true
|
|
76
|
+
name_prefix: "Production Validation"
|
|
77
|
+
|
|
78
|
+
# Production failure conditions
|
|
79
|
+
failure_conditions:
|
|
80
|
+
critical_issues:
|
|
81
|
+
condition: "output.issues.filter(i => i.severity === 'critical').length > 0"
|
|
82
|
+
message: "Critical issues found - cannot deploy to production"
|
|
83
|
+
severity: error
|
|
84
|
+
halt_execution: true
|
|
85
|
+
|
|
86
|
+
high_risk:
|
|
87
|
+
condition: "output.issues.filter(i => i.severity === 'error').length > 3"
|
|
88
|
+
message: "Too many errors - requires review before production"
|
|
89
|
+
severity: error
|
|
90
|
+
|
|
91
|
+
security_risk:
|
|
92
|
+
condition: "output.issues.filter(i => i.category === 'security').length > 0"
|
|
93
|
+
message: "Security issues must be resolved before production deployment"
|
|
94
|
+
severity: error
|
|
95
|
+
halt_execution: true
|