@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,222 @@
|
|
|
1
|
+
# Example reusable workflow for code quality checks
|
|
2
|
+
id: code-quality
|
|
3
|
+
name: Code Quality Workflow
|
|
4
|
+
description: Comprehensive code quality checks including linting, complexity, and best practices
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
tags: ["quality", "reusable", "linting"]
|
|
7
|
+
category: quality
|
|
8
|
+
|
|
9
|
+
# Input parameters
|
|
10
|
+
inputs:
|
|
11
|
+
- name: language
|
|
12
|
+
description: Programming language to analyze
|
|
13
|
+
schema:
|
|
14
|
+
type: string
|
|
15
|
+
enum: ["javascript", "typescript", "python", "go", "java"]
|
|
16
|
+
required: true
|
|
17
|
+
|
|
18
|
+
- name: complexity_threshold
|
|
19
|
+
description: Maximum allowed cyclomatic complexity
|
|
20
|
+
schema:
|
|
21
|
+
type: number
|
|
22
|
+
minimum: 1
|
|
23
|
+
maximum: 20
|
|
24
|
+
default: 10
|
|
25
|
+
|
|
26
|
+
- name: enable_formatting
|
|
27
|
+
description: Check code formatting
|
|
28
|
+
schema:
|
|
29
|
+
type: boolean
|
|
30
|
+
default: true
|
|
31
|
+
|
|
32
|
+
- name: custom_rules
|
|
33
|
+
description: Custom linting rules to apply
|
|
34
|
+
schema:
|
|
35
|
+
type: object
|
|
36
|
+
additionalProperties: true
|
|
37
|
+
required: false
|
|
38
|
+
|
|
39
|
+
# Output parameters
|
|
40
|
+
outputs:
|
|
41
|
+
- name: quality_score
|
|
42
|
+
description: Overall code quality score (0-100)
|
|
43
|
+
value_js: |
|
|
44
|
+
const lintScore = steps.linting?.output?.score || 0;
|
|
45
|
+
const complexityScore = steps.complexity?.output?.score || 0;
|
|
46
|
+
const formattingScore = steps.formatting?.output?.score || 100;
|
|
47
|
+
const weights = { lint: 0.4, complexity: 0.4, formatting: 0.2 };
|
|
48
|
+
return Math.round(
|
|
49
|
+
lintScore * weights.lint +
|
|
50
|
+
complexityScore * weights.complexity +
|
|
51
|
+
formattingScore * weights.formatting
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
- name: recommendations
|
|
55
|
+
description: List of recommendations for improvement
|
|
56
|
+
value_js: |
|
|
57
|
+
const recs = [];
|
|
58
|
+
if (steps.linting?.output?.issues?.length > 0) {
|
|
59
|
+
recs.push(`Fix ${steps.linting.output.issues.length} linting issues`);
|
|
60
|
+
}
|
|
61
|
+
if (steps.complexity?.output?.high_complexity_functions?.length > 0) {
|
|
62
|
+
recs.push(`Refactor ${steps.complexity.output.high_complexity_functions.length} complex functions`);
|
|
63
|
+
}
|
|
64
|
+
if (steps.formatting?.output?.issues?.length > 0) {
|
|
65
|
+
recs.push(`Fix ${steps.formatting.output.issues.length} formatting issues`);
|
|
66
|
+
}
|
|
67
|
+
return recs;
|
|
68
|
+
|
|
69
|
+
- name: detailed_report
|
|
70
|
+
description: Detailed quality report
|
|
71
|
+
value: |
|
|
72
|
+
Code Quality Report for {{ inputs.language }}:
|
|
73
|
+
================================================
|
|
74
|
+
Overall Score: {{ outputs.quality_score }}/100
|
|
75
|
+
|
|
76
|
+
Linting Results:
|
|
77
|
+
- Issues found: {{ steps.linting.output.issues | size }}
|
|
78
|
+
- Score: {{ steps.linting.output.score }}/100
|
|
79
|
+
|
|
80
|
+
Complexity Analysis:
|
|
81
|
+
- High complexity functions: {{ steps.complexity.output.high_complexity_functions | size }}
|
|
82
|
+
- Average complexity: {{ steps.complexity.output.average_complexity }}
|
|
83
|
+
|
|
84
|
+
{% if inputs.enable_formatting %}
|
|
85
|
+
Formatting Check:
|
|
86
|
+
- Issues found: {{ steps.formatting.output.issues | size }}
|
|
87
|
+
- Score: {{ steps.formatting.output.score }}/100
|
|
88
|
+
{% endif %}
|
|
89
|
+
|
|
90
|
+
Recommendations:
|
|
91
|
+
{% for rec in outputs.recommendations %}
|
|
92
|
+
- {{ rec }}
|
|
93
|
+
{% endfor %}
|
|
94
|
+
|
|
95
|
+
# Workflow steps
|
|
96
|
+
steps:
|
|
97
|
+
linting:
|
|
98
|
+
type: ai
|
|
99
|
+
prompt: |
|
|
100
|
+
Perform linting analysis for {{ inputs.language }} code.
|
|
101
|
+
Check for:
|
|
102
|
+
- Syntax errors
|
|
103
|
+
- Code style violations
|
|
104
|
+
- Best practices violations
|
|
105
|
+
- Unused variables and imports
|
|
106
|
+
- Type errors (if applicable)
|
|
107
|
+
|
|
108
|
+
{% if inputs.custom_rules %}
|
|
109
|
+
Additional custom rules to check:
|
|
110
|
+
{{ inputs.custom_rules | json }}
|
|
111
|
+
{% endif %}
|
|
112
|
+
|
|
113
|
+
Provide a score from 0-100 based on the issues found.
|
|
114
|
+
focus: style
|
|
115
|
+
schema: code-review
|
|
116
|
+
inputs:
|
|
117
|
+
language:
|
|
118
|
+
source: param
|
|
119
|
+
value: language
|
|
120
|
+
custom_rules:
|
|
121
|
+
source: param
|
|
122
|
+
value: custom_rules
|
|
123
|
+
|
|
124
|
+
complexity:
|
|
125
|
+
type: ai
|
|
126
|
+
prompt: |
|
|
127
|
+
Analyze code complexity for {{ inputs.language }}.
|
|
128
|
+
|
|
129
|
+
Check for:
|
|
130
|
+
- Cyclomatic complexity (threshold: {{ inputs.complexity_threshold }})
|
|
131
|
+
- Cognitive complexity
|
|
132
|
+
- Nested conditionals
|
|
133
|
+
- Long functions/methods
|
|
134
|
+
- Too many parameters
|
|
135
|
+
|
|
136
|
+
Report:
|
|
137
|
+
- List of functions exceeding complexity threshold
|
|
138
|
+
- Average complexity across the codebase
|
|
139
|
+
- Provide a score from 0-100
|
|
140
|
+
focus: architecture
|
|
141
|
+
schema: code-review
|
|
142
|
+
depends_on: [linting]
|
|
143
|
+
inputs:
|
|
144
|
+
language:
|
|
145
|
+
source: param
|
|
146
|
+
value: language
|
|
147
|
+
complexity_threshold:
|
|
148
|
+
source: param
|
|
149
|
+
value: complexity_threshold
|
|
150
|
+
|
|
151
|
+
formatting:
|
|
152
|
+
type: command
|
|
153
|
+
exec: |
|
|
154
|
+
case "{{ inputs.language }}" in
|
|
155
|
+
javascript|typescript)
|
|
156
|
+
npx prettier --check "**/*.{js,ts,jsx,tsx}" --list-different || true
|
|
157
|
+
;;
|
|
158
|
+
python)
|
|
159
|
+
python -m black --check . --diff || true
|
|
160
|
+
;;
|
|
161
|
+
go)
|
|
162
|
+
gofmt -l . || true
|
|
163
|
+
;;
|
|
164
|
+
java)
|
|
165
|
+
echo "Java formatting check not implemented"
|
|
166
|
+
;;
|
|
167
|
+
esac
|
|
168
|
+
if: inputs.enable_formatting === true
|
|
169
|
+
depends_on: [complexity]
|
|
170
|
+
inputs:
|
|
171
|
+
language:
|
|
172
|
+
source: param
|
|
173
|
+
value: language
|
|
174
|
+
enable_formatting:
|
|
175
|
+
source: param
|
|
176
|
+
value: enable_formatting
|
|
177
|
+
|
|
178
|
+
best_practices:
|
|
179
|
+
type: ai
|
|
180
|
+
prompt: |
|
|
181
|
+
Review {{ inputs.language }} code for best practices:
|
|
182
|
+
|
|
183
|
+
- Design patterns usage
|
|
184
|
+
- SOLID principles adherence
|
|
185
|
+
- Error handling patterns
|
|
186
|
+
- Documentation quality
|
|
187
|
+
- Test coverage indicators
|
|
188
|
+
- Performance considerations
|
|
189
|
+
|
|
190
|
+
Provide actionable recommendations.
|
|
191
|
+
focus: architecture
|
|
192
|
+
depends_on: [formatting]
|
|
193
|
+
inputs:
|
|
194
|
+
language:
|
|
195
|
+
source: param
|
|
196
|
+
value: language
|
|
197
|
+
|
|
198
|
+
aggregate_results:
|
|
199
|
+
type: noop
|
|
200
|
+
depends_on: [best_practices]
|
|
201
|
+
# This step exists to ensure all previous steps complete
|
|
202
|
+
# The actual aggregation happens in the output parameters
|
|
203
|
+
|
|
204
|
+
# Usage examples (documentation only):
|
|
205
|
+
#
|
|
206
|
+
# 1. TypeScript with strict settings:
|
|
207
|
+
# language: typescript
|
|
208
|
+
# complexity_threshold: 8
|
|
209
|
+
# enable_formatting: true
|
|
210
|
+
# custom_rules:
|
|
211
|
+
# no-any: error
|
|
212
|
+
# explicit-function-return-type: warning
|
|
213
|
+
#
|
|
214
|
+
# 2. Python basic check:
|
|
215
|
+
# language: python
|
|
216
|
+
# complexity_threshold: 15
|
|
217
|
+
# enable_formatting: false
|
|
218
|
+
#
|
|
219
|
+
# 3. Go with formatting:
|
|
220
|
+
# language: go
|
|
221
|
+
# complexity_threshold: 10
|
|
222
|
+
# enable_formatting: true
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Quick PR validation workflow
|
|
2
|
+
# Performs basic checks for PR validation
|
|
3
|
+
|
|
4
|
+
id: quick-pr-check
|
|
5
|
+
name: Quick PR Check
|
|
6
|
+
description: Fast workflow for initial PR validation
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
category: validation
|
|
9
|
+
|
|
10
|
+
# Input parameters
|
|
11
|
+
inputs:
|
|
12
|
+
- name: pr_type
|
|
13
|
+
description: Type of PR (feature, bugfix, hotfix)
|
|
14
|
+
schema:
|
|
15
|
+
type: string
|
|
16
|
+
enum: ["feature", "bugfix", "hotfix"]
|
|
17
|
+
required: true
|
|
18
|
+
|
|
19
|
+
- name: run_tests
|
|
20
|
+
description: Whether to run tests
|
|
21
|
+
schema:
|
|
22
|
+
type: boolean
|
|
23
|
+
default: true
|
|
24
|
+
|
|
25
|
+
- name: run_lint
|
|
26
|
+
description: Whether to run linting
|
|
27
|
+
schema:
|
|
28
|
+
type: boolean
|
|
29
|
+
default: true
|
|
30
|
+
|
|
31
|
+
# Output parameters
|
|
32
|
+
outputs:
|
|
33
|
+
- name: approval_status
|
|
34
|
+
description: Whether the PR passes quick checks
|
|
35
|
+
value_js: |
|
|
36
|
+
const testsPassed = !inputs.run_tests || steps.run_tests?.output?.success || false;
|
|
37
|
+
const lintPassed = !inputs.run_lint || steps.lint_check?.output?.passed || false;
|
|
38
|
+
return testsPassed && lintPassed ? "approved" : "needs_work";
|
|
39
|
+
|
|
40
|
+
- name: summary
|
|
41
|
+
description: Summary of the quick check
|
|
42
|
+
value: |
|
|
43
|
+
Quick Check Results for {{ inputs.pr_type }} PR:
|
|
44
|
+
{% if inputs.run_tests %}
|
|
45
|
+
- Tests: {{ steps.run_tests.output.success ? 'Passed' : 'Failed' }}
|
|
46
|
+
{% endif %}
|
|
47
|
+
{% if inputs.run_lint %}
|
|
48
|
+
- Linting: {{ steps.lint_check.output.passed ? 'Passed' : 'Failed' }}
|
|
49
|
+
{% endif %}
|
|
50
|
+
Overall Status: {{ outputs.approval_status }}
|
|
51
|
+
|
|
52
|
+
# Workflow steps at root level
|
|
53
|
+
steps:
|
|
54
|
+
run_tests:
|
|
55
|
+
type: command
|
|
56
|
+
exec: npm test
|
|
57
|
+
timeout: 300
|
|
58
|
+
if: inputs.run_tests === true
|
|
59
|
+
|
|
60
|
+
lint_check:
|
|
61
|
+
type: command
|
|
62
|
+
exec: npm run lint
|
|
63
|
+
depends_on: [run_tests]
|
|
64
|
+
if: inputs.run_lint === true
|
|
65
|
+
|
|
66
|
+
pr_summary:
|
|
67
|
+
type: log
|
|
68
|
+
message: |
|
|
69
|
+
Quick Check Results for {{ inputs.pr_type }} PR:
|
|
70
|
+
{% if inputs.run_tests %}
|
|
71
|
+
- Tests: {{ steps.run_tests.output.success ? 'Passed' : 'Failed' }}
|
|
72
|
+
{% endif %}
|
|
73
|
+
{% if inputs.run_lint %}
|
|
74
|
+
- Linting: {{ steps.lint_check.output.passed ? 'Passed' : 'Failed' }}
|
|
75
|
+
{% endif %}
|
|
76
|
+
Status: {{ outputs.approval_status }}
|
|
77
|
+
depends_on: [lint_check]
|
|
78
|
+
level: info
|
|
79
|
+
|
|
80
|
+
# Usage examples (documentation only):
|
|
81
|
+
#
|
|
82
|
+
# 1. Full validation:
|
|
83
|
+
# pr_type: feature
|
|
84
|
+
# run_tests: true
|
|
85
|
+
# run_lint: true
|
|
86
|
+
#
|
|
87
|
+
# 2. Quick lint only:
|
|
88
|
+
# pr_type: hotfix
|
|
89
|
+
# run_tests: false
|
|
90
|
+
# run_lint: true
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Example demonstrating workflow composition and state isolation
|
|
2
|
+
# This config imports the calculator workflow and uses it as a step
|
|
3
|
+
# Demonstrates that:
|
|
4
|
+
# 1. Workflow tests are NOT auto-executed when imported
|
|
5
|
+
# 2. Workflow steps run in isolated context
|
|
6
|
+
# 3. State does not leak between workflow and parent config
|
|
7
|
+
|
|
8
|
+
version: "1.0"
|
|
9
|
+
|
|
10
|
+
# Import the calculator workflow
|
|
11
|
+
imports:
|
|
12
|
+
- ./calculator-workflow.yaml
|
|
13
|
+
|
|
14
|
+
# Main checks/steps in this config
|
|
15
|
+
checks:
|
|
16
|
+
# Step 1: Set some state in parent context
|
|
17
|
+
parent_state_setup:
|
|
18
|
+
type: memory
|
|
19
|
+
operation: set
|
|
20
|
+
key: parent_value
|
|
21
|
+
value: "I am from parent context"
|
|
22
|
+
|
|
23
|
+
# Step 2: Use the calculator workflow as an isolated step
|
|
24
|
+
use_calculator:
|
|
25
|
+
type: workflow
|
|
26
|
+
workflow: calculator
|
|
27
|
+
depends_on: [parent_state_setup]
|
|
28
|
+
args:
|
|
29
|
+
operation: multiply
|
|
30
|
+
a: 7
|
|
31
|
+
b: 6
|
|
32
|
+
|
|
33
|
+
# Step 3: Verify calculator result is accessible
|
|
34
|
+
verify_calculator_result:
|
|
35
|
+
type: command
|
|
36
|
+
depends_on: [use_calculator]
|
|
37
|
+
exec: |
|
|
38
|
+
#!/bin/bash
|
|
39
|
+
result="{{ outputs.use_calculator.result }}"
|
|
40
|
+
summary="{{ outputs.use_calculator.summary }}"
|
|
41
|
+
|
|
42
|
+
echo "Calculator returned: $result"
|
|
43
|
+
echo "Summary: $summary"
|
|
44
|
+
|
|
45
|
+
if [ "$result" = "42" ]; then
|
|
46
|
+
echo '{"validation": "passed", "result": '$result'}'
|
|
47
|
+
exit 0
|
|
48
|
+
else
|
|
49
|
+
echo '{"validation": "failed", "expected": 42, "got": '$result'}'
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Step 4: Verify parent state is still intact (not affected by workflow)
|
|
54
|
+
verify_parent_state:
|
|
55
|
+
type: memory
|
|
56
|
+
operation: get
|
|
57
|
+
key: parent_value
|
|
58
|
+
depends_on: [use_calculator]
|
|
59
|
+
|
|
60
|
+
# Step 5: Test state isolation - workflow should NOT have access to parent memory
|
|
61
|
+
test_state_isolation:
|
|
62
|
+
type: command
|
|
63
|
+
depends_on: [verify_parent_state]
|
|
64
|
+
exec: |
|
|
65
|
+
#!/bin/bash
|
|
66
|
+
parent_value="{{ outputs.verify_parent_state }}"
|
|
67
|
+
|
|
68
|
+
echo "Parent state verification:"
|
|
69
|
+
echo " parent_value = $parent_value"
|
|
70
|
+
|
|
71
|
+
if [ "$parent_value" = "I am from parent context" ]; then
|
|
72
|
+
echo '{"isolation_test": "passed", "message": "Parent state intact"}'
|
|
73
|
+
exit 0
|
|
74
|
+
else
|
|
75
|
+
echo '{"isolation_test": "failed", "message": "Parent state was modified"}'
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Step 6: Use calculator again with different inputs (reusability test)
|
|
80
|
+
use_calculator_again:
|
|
81
|
+
type: workflow
|
|
82
|
+
workflow: calculator
|
|
83
|
+
depends_on: [test_state_isolation]
|
|
84
|
+
args:
|
|
85
|
+
operation: add
|
|
86
|
+
a: 100
|
|
87
|
+
b: 23
|
|
88
|
+
|
|
89
|
+
# Step 7: Verify both calculator invocations produced correct results
|
|
90
|
+
verify_multiple_invocations:
|
|
91
|
+
type: command
|
|
92
|
+
depends_on: [use_calculator_again]
|
|
93
|
+
exec: |
|
|
94
|
+
#!/bin/bash
|
|
95
|
+
first_result="{{ outputs.use_calculator.result }}"
|
|
96
|
+
second_result="{{ outputs.use_calculator_again.result }}"
|
|
97
|
+
|
|
98
|
+
echo "Multiple invocation test:"
|
|
99
|
+
echo " First call (7 * 6): $first_result (expected 42)"
|
|
100
|
+
echo " Second call (100 + 23): $second_result (expected 123)"
|
|
101
|
+
|
|
102
|
+
if [ "$first_result" = "42" ] && [ "$second_result" = "123" ]; then
|
|
103
|
+
echo '{"multiple_invocations": "passed"}'
|
|
104
|
+
exit 0
|
|
105
|
+
else
|
|
106
|
+
echo '{"multiple_invocations": "failed"}'
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Final summary
|
|
111
|
+
summary:
|
|
112
|
+
type: log
|
|
113
|
+
depends_on: [verify_multiple_invocations]
|
|
114
|
+
message: |
|
|
115
|
+
========================================
|
|
116
|
+
Workflow Composition Test Summary
|
|
117
|
+
========================================
|
|
118
|
+
|
|
119
|
+
✓ Calculator workflow imported successfully
|
|
120
|
+
✓ Workflow tests were NOT auto-executed
|
|
121
|
+
✓ Calculator step executed in isolation
|
|
122
|
+
✓ Results: {{ outputs.use_calculator.summary }}
|
|
123
|
+
✓ Parent state remained intact
|
|
124
|
+
✓ Multiple workflow invocations work correctly
|
|
125
|
+
|
|
126
|
+
First calculation: {{ outputs.use_calculator.result }}
|
|
127
|
+
Second calculation: {{ outputs.use_calculator_again.result }}
|
|
128
|
+
|
|
129
|
+
All state isolation tests PASSED!
|
|
130
|
+
========================================
|
|
@@ -36,6 +36,9 @@ export declare class FailureConditionEvaluator {
|
|
|
36
36
|
environment?: Record<string, string>;
|
|
37
37
|
previousResults?: Map<string, ReviewSummary>;
|
|
38
38
|
authorAssociation?: string;
|
|
39
|
+
workflowInputs?: Record<string, unknown>;
|
|
40
|
+
/** Current step's output for guarantee evaluation */
|
|
41
|
+
output?: unknown;
|
|
39
42
|
}): Promise<boolean>;
|
|
40
43
|
/**
|
|
41
44
|
* Evaluate all failure conditions for a check result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,OAAO,CAAC;IA2DnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,OAAO,CAAC;IA2DnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,qDAAqD;QACrD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GACA,OAAO,CAAC,OAAO,CAAC;IAoFnB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,eAAe,CAAC,EAAE,iBAAiB,EACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmCpC;;OAEG;YACW,oBAAoB;IA0ElC;;OAEG;YACW,uBAAuB;IA0BrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6S1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkK9B,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAIvF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;QAChE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAChC;IASD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM;CAiChE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Frontend, FrontendContext } from './host';
|
|
2
|
+
export declare class GitHubFrontend implements Frontend {
|
|
3
|
+
readonly name = "github";
|
|
4
|
+
private subs;
|
|
5
|
+
private checkRunIds;
|
|
6
|
+
private revision;
|
|
7
|
+
private cachedCommentId?;
|
|
8
|
+
private stepStatusByGroup;
|
|
9
|
+
private debounceMs;
|
|
10
|
+
private maxWaitMs;
|
|
11
|
+
private _timer;
|
|
12
|
+
private _lastFlush;
|
|
13
|
+
private _pendingIds;
|
|
14
|
+
private updateLocks;
|
|
15
|
+
minUpdateDelayMs: number;
|
|
16
|
+
private createdCommentGithubIds;
|
|
17
|
+
start(ctx: FrontendContext): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
private buildFullBody;
|
|
20
|
+
private threadKeyFor;
|
|
21
|
+
private renderThreadHeader;
|
|
22
|
+
private renderSections;
|
|
23
|
+
/**
|
|
24
|
+
* Acquires a mutex lock for the given group and executes the update.
|
|
25
|
+
* This ensures only one comment update happens at a time per group,
|
|
26
|
+
* preventing race conditions where updates overwrite each other.
|
|
27
|
+
*
|
|
28
|
+
* Uses a proper queue-based mutex: each new caller chains onto the previous
|
|
29
|
+
* lock, ensuring strict serialization even when multiple callers wait
|
|
30
|
+
* simultaneously.
|
|
31
|
+
*/
|
|
32
|
+
private updateGroupedComment;
|
|
33
|
+
/**
|
|
34
|
+
* Performs the actual comment update with delay enforcement.
|
|
35
|
+
*/
|
|
36
|
+
private performGroupedCommentUpdate;
|
|
37
|
+
private deriveTriggeredBy;
|
|
38
|
+
private mergeIntoExistingBody;
|
|
39
|
+
private parseSections;
|
|
40
|
+
private serializeSections;
|
|
41
|
+
private extractSectionById;
|
|
42
|
+
private escapeRegExp;
|
|
43
|
+
private getGroupForCheck;
|
|
44
|
+
private upsertSectionState;
|
|
45
|
+
private commentIdForGroup;
|
|
46
|
+
/**
|
|
47
|
+
* Compute failure condition results for a completed check so Check Runs map to the
|
|
48
|
+
* correct GitHub conclusion. This mirrors the engine's evaluation for fail_if.
|
|
49
|
+
*/
|
|
50
|
+
private evaluateFailureResults;
|
|
51
|
+
private scheduleUpdate;
|
|
52
|
+
private flushNow;
|
|
53
|
+
/**
|
|
54
|
+
* Sleep utility for enforcing delays
|
|
55
|
+
*/
|
|
56
|
+
private sleep;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=github-frontend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/github-frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAmBxD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,IAAI,YAAY;IAChC,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,OAAO,CAAC,iBAAiB,CAAqD;IAG9E,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAkC;IAGrD,OAAO,CAAC,WAAW,CAAyC;IACrD,gBAAgB,EAAE,MAAM,CAAQ;IAEvC,OAAO,CAAC,uBAAuB,CAAkC;IAEjE,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IA4KjC,IAAI,IAAI,IAAI;YAKE,aAAa;IAU3B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAetB;;;;;;;;OAQG;YACW,oBAAoB;IA8ClC;;OAEG;YACW,2BAA2B;IAiEzC,OAAO,CAAC,iBAAiB;YAeX,qBAAqB;IA4CnC,OAAO,CAAC,aAAa;IAoErB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;YACW,sBAAsB;IA6DpC,OAAO,CAAC,cAAc;YAgBR,QAAQ;IAWtB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { EventBus } from '../event-bus/event-bus';
|
|
2
|
+
export interface FrontendContext {
|
|
3
|
+
eventBus: EventBus;
|
|
4
|
+
logger: {
|
|
5
|
+
info: (...a: any[]) => void;
|
|
6
|
+
warn: (...a: any[]) => void;
|
|
7
|
+
error: (...a: any[]) => void;
|
|
8
|
+
};
|
|
9
|
+
config: unknown;
|
|
10
|
+
run: {
|
|
11
|
+
runId: string;
|
|
12
|
+
workflowId?: string;
|
|
13
|
+
repo?: {
|
|
14
|
+
owner: string;
|
|
15
|
+
name: string;
|
|
16
|
+
};
|
|
17
|
+
pr?: number;
|
|
18
|
+
headSha?: string;
|
|
19
|
+
event?: string;
|
|
20
|
+
actor?: string;
|
|
21
|
+
};
|
|
22
|
+
octokit?: any;
|
|
23
|
+
webhookContext?: {
|
|
24
|
+
webhookData?: Map<string, unknown>;
|
|
25
|
+
eventType?: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface Frontend {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
start(ctx: FrontendContext): Promise<void> | void;
|
|
31
|
+
stop(): Promise<void> | void;
|
|
32
|
+
}
|
|
33
|
+
export interface FrontendSpec {
|
|
34
|
+
name: string;
|
|
35
|
+
package?: string;
|
|
36
|
+
config?: unknown;
|
|
37
|
+
}
|
|
38
|
+
export declare class FrontendsHost {
|
|
39
|
+
private bus;
|
|
40
|
+
private log;
|
|
41
|
+
private frontends;
|
|
42
|
+
constructor(bus: EventBus, log: FrontendContext['logger']);
|
|
43
|
+
load(specs: FrontendSpec[]): Promise<void>;
|
|
44
|
+
startAll(ctxFactory: () => FrontendContext): Promise<void>;
|
|
45
|
+
stopAll(): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QAC5B,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KAC9B,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd,cAAc,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;IAKnD,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1C,QAAQ,CAAC,UAAU,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Frontend, FrontendContext } from './host';
|
|
2
|
+
export declare class NdjsonSink implements Frontend {
|
|
3
|
+
readonly name = "ndjson-sink";
|
|
4
|
+
private cfg;
|
|
5
|
+
private unsub?;
|
|
6
|
+
private filePath?;
|
|
7
|
+
constructor(config?: unknown);
|
|
8
|
+
start(ctx: FrontendContext): void;
|
|
9
|
+
stop(): void;
|
|
10
|
+
private resolveFile;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ndjson-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndjson-sink.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/ndjson-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAMxD,qBAAa,UAAW,YAAW,QAAQ;IACzC,SAAgB,IAAI,iBAAiB;IACrC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,KAAK,CAAC,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,MAAM,CAAC,EAAE,OAAO;IAI5B,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAoBjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack Frontend for Visor workflows.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Posts AI replies to Slack threads
|
|
6
|
+
* - Converts Markdown to Slack mrkdwn format
|
|
7
|
+
* - Renders mermaid diagrams to PNG and uploads as images
|
|
8
|
+
* - Manages 👀/👍 reactions for acknowledgement
|
|
9
|
+
* - Handles human input prompts via prompt-state
|
|
10
|
+
*
|
|
11
|
+
* Mermaid Diagram Rendering:
|
|
12
|
+
* - Detects ```mermaid code blocks in AI responses
|
|
13
|
+
* - Renders to PNG using @mermaid-js/mermaid-cli (mmdc)
|
|
14
|
+
* - Uploads rendered images to Slack thread
|
|
15
|
+
* - Replaces mermaid blocks with "_(See diagram above)_" placeholder
|
|
16
|
+
*
|
|
17
|
+
* Requirements for mermaid rendering:
|
|
18
|
+
* - Node.js and npx in PATH
|
|
19
|
+
* - Puppeteer/Chromium dependencies (mermaid-cli uses headless browser)
|
|
20
|
+
* - On Linux: apt-get install chromium-browser libatk-bridge2.0-0 libgtk-3-0
|
|
21
|
+
*/
|
|
22
|
+
import type { Frontend, FrontendContext } from './host';
|
|
23
|
+
type SlackFrontendConfig = {
|
|
24
|
+
defaultChannel?: string;
|
|
25
|
+
groupChannels?: Record<string, string>;
|
|
26
|
+
debounceMs?: number;
|
|
27
|
+
maxWaitMs?: number;
|
|
28
|
+
showRawOutput?: boolean;
|
|
29
|
+
telemetry?: {
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare class SlackFrontend implements Frontend {
|
|
34
|
+
readonly name = "slack";
|
|
35
|
+
private subs;
|
|
36
|
+
private cfg;
|
|
37
|
+
private acked;
|
|
38
|
+
private ackRef;
|
|
39
|
+
private ackName;
|
|
40
|
+
private doneName;
|
|
41
|
+
constructor(config?: SlackFrontendConfig);
|
|
42
|
+
start(ctx: FrontendContext): void;
|
|
43
|
+
stop(): void;
|
|
44
|
+
private getSlack;
|
|
45
|
+
private getInboundSlackPayload;
|
|
46
|
+
private getInboundSlackEvent;
|
|
47
|
+
private ensureAcknowledgement;
|
|
48
|
+
private finalizeReactions;
|
|
49
|
+
/**
|
|
50
|
+
* Post direct replies into the originating Slack thread when appropriate.
|
|
51
|
+
* This is independent of summary messages and is intended for chat-style flows
|
|
52
|
+
* (e.g., AI answers and explicit chat/notify steps).
|
|
53
|
+
*/
|
|
54
|
+
private maybePostDirectReply;
|
|
55
|
+
private getTraceInfo;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=slack-frontend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAUxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAgIjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;YAWd,qBAAqB;YAmCrB,iBAAiB;IA6B/B;;;;OAIG;YACW,oBAAoB;IAgKlC,OAAO,CAAC,YAAY;CAWrB"}
|