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