@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,71 @@
|
|
|
1
|
+
export type IntegrationEvent = {
|
|
2
|
+
type: 'CheckStatusRequested';
|
|
3
|
+
checkId?: string;
|
|
4
|
+
checkName: string;
|
|
5
|
+
status: 'queued' | 'in_progress' | 'completed' | 'cancelled';
|
|
6
|
+
conclusion?: 'success' | 'failure' | 'neutral' | 'skipped';
|
|
7
|
+
output?: {
|
|
8
|
+
title?: string;
|
|
9
|
+
summary?: string;
|
|
10
|
+
text?: string;
|
|
11
|
+
annotations?: any[];
|
|
12
|
+
};
|
|
13
|
+
idempotencyKey?: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'CommentRequested';
|
|
16
|
+
body: string;
|
|
17
|
+
threadKey?: string;
|
|
18
|
+
commentId?: string;
|
|
19
|
+
idempotencyKey?: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'CheckStatusCompleted';
|
|
22
|
+
checkId?: string;
|
|
23
|
+
success: boolean;
|
|
24
|
+
error?: {
|
|
25
|
+
message: string;
|
|
26
|
+
stack?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
};
|
|
29
|
+
} | {
|
|
30
|
+
type: 'HumanInputRequested';
|
|
31
|
+
checkId: string;
|
|
32
|
+
prompt: string;
|
|
33
|
+
channel?: string;
|
|
34
|
+
threadTs?: string;
|
|
35
|
+
threadKey?: string;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'SnapshotSaved';
|
|
38
|
+
checkId: string;
|
|
39
|
+
channel?: string;
|
|
40
|
+
threadTs?: string;
|
|
41
|
+
threadKey?: string;
|
|
42
|
+
filePath: string;
|
|
43
|
+
} | {
|
|
44
|
+
type: 'CommentPosted';
|
|
45
|
+
threadKey?: string;
|
|
46
|
+
commentId: string;
|
|
47
|
+
success: boolean;
|
|
48
|
+
error?: {
|
|
49
|
+
message: string;
|
|
50
|
+
stack?: string;
|
|
51
|
+
name?: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export interface EventEnvelope<T = any> {
|
|
55
|
+
id: string;
|
|
56
|
+
version: 1;
|
|
57
|
+
timestamp: string;
|
|
58
|
+
runId: string;
|
|
59
|
+
workflowId?: string;
|
|
60
|
+
caseId?: string;
|
|
61
|
+
wave?: number;
|
|
62
|
+
attempt?: number;
|
|
63
|
+
checkId?: string;
|
|
64
|
+
traceId?: string;
|
|
65
|
+
spanId?: string;
|
|
66
|
+
causationId?: string;
|
|
67
|
+
correlationId?: string;
|
|
68
|
+
payload: T;
|
|
69
|
+
}
|
|
70
|
+
export type AnyEvent = any;
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/event-bus/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7D,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3D,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D,CAAC;AAEN,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Code Reviewer Subagent
|
|
2
|
+
|
|
3
|
+
You are a specialized code review subagent for Visor. Your role is to perform deep, comprehensive code reviews with a focus on:
|
|
4
|
+
|
|
5
|
+
## Primary Responsibilities
|
|
6
|
+
|
|
7
|
+
1. **Security Analysis**
|
|
8
|
+
- Identify potential security vulnerabilities
|
|
9
|
+
- Check for proper input validation
|
|
10
|
+
- Review authentication and authorization logic
|
|
11
|
+
- Detect sensitive data exposure risks
|
|
12
|
+
|
|
13
|
+
2. **Performance Review**
|
|
14
|
+
- Identify performance bottlenecks
|
|
15
|
+
- Suggest algorithmic improvements
|
|
16
|
+
- Review database query efficiency
|
|
17
|
+
- Check for memory leaks
|
|
18
|
+
|
|
19
|
+
3. **Code Quality**
|
|
20
|
+
- Assess code readability and maintainability
|
|
21
|
+
- Check naming conventions
|
|
22
|
+
- Review documentation completeness
|
|
23
|
+
- Identify code duplication
|
|
24
|
+
|
|
25
|
+
4. **Architecture Assessment**
|
|
26
|
+
- Evaluate design patterns usage
|
|
27
|
+
- Check for proper separation of concerns
|
|
28
|
+
- Review module boundaries
|
|
29
|
+
- Assess coupling and cohesion
|
|
30
|
+
|
|
31
|
+
## Review Process
|
|
32
|
+
|
|
33
|
+
When reviewing code:
|
|
34
|
+
|
|
35
|
+
1. Start with a high-level overview of the changes
|
|
36
|
+
2. Identify the most critical issues first
|
|
37
|
+
3. Provide specific, actionable feedback
|
|
38
|
+
4. Include code examples for suggested improvements
|
|
39
|
+
5. Reference best practices and industry standards
|
|
40
|
+
|
|
41
|
+
## Output Format
|
|
42
|
+
|
|
43
|
+
Structure your review as:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
## Overview
|
|
47
|
+
Brief summary of the changes
|
|
48
|
+
|
|
49
|
+
## Critical Issues
|
|
50
|
+
- Issue 1: [Description and fix]
|
|
51
|
+
- Issue 2: [Description and fix]
|
|
52
|
+
|
|
53
|
+
## Improvements
|
|
54
|
+
- Suggestion 1: [Description]
|
|
55
|
+
- Suggestion 2: [Description]
|
|
56
|
+
|
|
57
|
+
## Positive Aspects
|
|
58
|
+
- What was done well
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Tools Available
|
|
62
|
+
|
|
63
|
+
You have access to:
|
|
64
|
+
- `Grep`: Search for patterns in code
|
|
65
|
+
- `Read`: Read file contents
|
|
66
|
+
- `WebSearch`: Search for best practices
|
|
67
|
+
- MCP tools for specialized analysis
|
|
68
|
+
|
|
69
|
+
Use these tools effectively to provide thorough, evidence-based reviews.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"code_analyzer": {
|
|
4
|
+
"command": "python3",
|
|
5
|
+
"args": ["./mcp/analyzer.py"],
|
|
6
|
+
"env": {
|
|
7
|
+
"ANALYSIS_LEVEL": "comprehensive"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"security_scanner": {
|
|
11
|
+
"command": "node",
|
|
12
|
+
"args": ["./mcp/security.js"],
|
|
13
|
+
"env": {
|
|
14
|
+
"SCAN_DEPTH": "full",
|
|
15
|
+
"INCLUDE_DEPENDENCIES": "true"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"performance_profiler": {
|
|
19
|
+
"command": "node",
|
|
20
|
+
"args": ["./tools/performance-analyzer.js"],
|
|
21
|
+
"env": {
|
|
22
|
+
"PROFILE_MODE": "detailed",
|
|
23
|
+
"OUTPUT_FORMAT": "json"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"dependency_checker": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": ["npm-check", "--json"],
|
|
29
|
+
"env": {
|
|
30
|
+
"CHECK_UNUSED": "true"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
# Calculator SDK Example - Quick Reference
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`calculator-sdk-real.ts` is a complete, runnable example showing how to use Visor SDK programmatically with the human-input provider.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
✅ **Real SDK Usage** - Actual imports and execution, not mocked
|
|
10
|
+
✅ **Inline Configuration** - No YAML files needed
|
|
11
|
+
✅ **Custom Input Hook** - Shows how to implement your own input handler
|
|
12
|
+
✅ **Complete Workflow** - 8 checks with dependencies, memory, and JavaScript
|
|
13
|
+
✅ **Error Handling** - Validation and error recovery
|
|
14
|
+
✅ **Two Modes** - Interactive (manual input) and automated (for testing)
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
### Interactive Mode
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Build the project first
|
|
22
|
+
npm run build
|
|
23
|
+
|
|
24
|
+
# Run the example
|
|
25
|
+
ts-node examples/calculator-sdk-real.ts
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You'll be prompted for:
|
|
29
|
+
1. First number (e.g., 42)
|
|
30
|
+
2. Second number (e.g., 7)
|
|
31
|
+
3. Operation (+, -, *, /)
|
|
32
|
+
|
|
33
|
+
### Automated Mode (Testing)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Provide inputs as arguments: <num1> <num2> <operation>
|
|
37
|
+
ts-node examples/calculator-sdk-real.ts 42 7 +
|
|
38
|
+
|
|
39
|
+
# Examples:
|
|
40
|
+
ts-node examples/calculator-sdk-real.ts 100 25 -
|
|
41
|
+
ts-node examples/calculator-sdk-real.ts 6 7 "*"
|
|
42
|
+
ts-node examples/calculator-sdk-real.ts 81 9 /
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Code Structure
|
|
46
|
+
|
|
47
|
+
### 1. Configuration (Inline)
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
const calculatorConfig: VisorConfig = {
|
|
51
|
+
version: "1.0",
|
|
52
|
+
memory: {
|
|
53
|
+
storage: 'memory',
|
|
54
|
+
namespace: 'calculator'
|
|
55
|
+
},
|
|
56
|
+
checks: {
|
|
57
|
+
"get-number1": { type: "human-input", prompt: "Enter the first number:" },
|
|
58
|
+
"store-number1": { type: "memory", operation: "set", key: "number1", ... },
|
|
59
|
+
"get-number2": { type: "human-input", prompt: "Enter the second number:" },
|
|
60
|
+
"store-number2": { type: "memory", operation: "set", key: "number2", ... },
|
|
61
|
+
"get-operation": { type: "human-input", prompt: "Select operation:" },
|
|
62
|
+
"store-operation": { type: "memory", operation: "set", key: "operation", ... },
|
|
63
|
+
"calculate": { type: "script", content: "..." },
|
|
64
|
+
"show-result": { type: "log", message: "..." }
|
|
65
|
+
},
|
|
66
|
+
output: { pr_comment: { format: "markdown", group_by: "check", collapse: false } }
|
|
67
|
+
};
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 2. Custom Hook Implementation
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
async function customHumanInputHandler(request: HumanInputRequest): Promise<string> {
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
const rl = readline.createInterface({
|
|
76
|
+
input: process.stdin,
|
|
77
|
+
output: process.stdout
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Display prompt
|
|
81
|
+
console.log(`💬 ${request.prompt}`);
|
|
82
|
+
|
|
83
|
+
rl.question('> ', (answer) => {
|
|
84
|
+
rl.close();
|
|
85
|
+
const trimmed = answer.trim();
|
|
86
|
+
|
|
87
|
+
if (!trimmed && !request.allowEmpty) {
|
|
88
|
+
reject(new Error('Empty input not allowed'));
|
|
89
|
+
} else {
|
|
90
|
+
resolve(trimmed || request.default || '');
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3. SDK Execution
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
async function main() {
|
|
101
|
+
// 1. Set up the hook
|
|
102
|
+
HumanInputCheckProvider.setHooks({
|
|
103
|
+
onHumanInput: customHumanInputHandler
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// 2. Create execution engine
|
|
107
|
+
const engine = new CheckExecutionEngine();
|
|
108
|
+
|
|
109
|
+
// 3. Execute checks
|
|
110
|
+
const result = await engine.executeChecks({
|
|
111
|
+
checks: Object.keys(calculatorConfig.checks || {}),
|
|
112
|
+
config: calculatorConfig,
|
|
113
|
+
outputFormat: 'table',
|
|
114
|
+
maxParallelism: 1, // Run sequentially for human input
|
|
115
|
+
debug: false
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// 4. Process results
|
|
119
|
+
console.log('✅ Workflow completed!');
|
|
120
|
+
console.log(`Execution time: ${result.executionTime}ms`);
|
|
121
|
+
|
|
122
|
+
// 5. Access memory store for final values
|
|
123
|
+
const { MemoryStore } = await import('../src/memory-store');
|
|
124
|
+
const memoryStore = MemoryStore.getInstance(calculatorConfig.memory);
|
|
125
|
+
const keys = memoryStore.list('calculator');
|
|
126
|
+
for (const key of keys) {
|
|
127
|
+
console.log(`${key}: ${memoryStore.get(key, 'calculator')}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Workflow Diagram
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
┌─────────────────┐
|
|
136
|
+
│ get-number1 │ ← User inputs: 42
|
|
137
|
+
│ (human-input) │
|
|
138
|
+
└────────┬────────┘
|
|
139
|
+
│
|
|
140
|
+
▼
|
|
141
|
+
┌─────────────────┐
|
|
142
|
+
│ store-number1 │ ← Stores parseFloat(42) in memory
|
|
143
|
+
│ (memory) │
|
|
144
|
+
└────────┬────────┘
|
|
145
|
+
│
|
|
146
|
+
▼
|
|
147
|
+
┌─────────────────┐
|
|
148
|
+
│ get-number2 │ ← User inputs: 7
|
|
149
|
+
│ (human-input) │
|
|
150
|
+
└────────┬────────┘
|
|
151
|
+
│
|
|
152
|
+
▼
|
|
153
|
+
┌─────────────────┐
|
|
154
|
+
│ store-number2 │ ← Stores parseFloat(7) in memory
|
|
155
|
+
│ (memory) │
|
|
156
|
+
└────────┬────────┘
|
|
157
|
+
│
|
|
158
|
+
▼
|
|
159
|
+
┌─────────────────┐
|
|
160
|
+
│ get-operation │ ← User inputs: +
|
|
161
|
+
│ (human-input) │
|
|
162
|
+
└────────┬────────┘
|
|
163
|
+
│
|
|
164
|
+
▼
|
|
165
|
+
┌─────────────────┐
|
|
166
|
+
│ store-operation │ ← Stores "+" in memory, validates
|
|
167
|
+
│ (memory) │
|
|
168
|
+
└────────┬────────┘
|
|
169
|
+
│
|
|
170
|
+
▼
|
|
171
|
+
┌─────────────────┐
|
|
172
|
+
│ calculate │ ← JavaScript: 42 + 7 = 49
|
|
173
|
+
│ (memory) │ Stores result in memory
|
|
174
|
+
└────────┬────────┘
|
|
175
|
+
│
|
|
176
|
+
▼
|
|
177
|
+
┌─────────────────┐
|
|
178
|
+
│ show-result │ ← Displays formatted output
|
|
179
|
+
│ (log) │
|
|
180
|
+
└─────────────────┘
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Key Concepts Demonstrated
|
|
184
|
+
|
|
185
|
+
### 1. Human Input Integration
|
|
186
|
+
- Custom hook implementation
|
|
187
|
+
- Prompt customization
|
|
188
|
+
- Input validation
|
|
189
|
+
- Error handling
|
|
190
|
+
|
|
191
|
+
### 2. Memory Provider
|
|
192
|
+
- Storing values between checks
|
|
193
|
+
- Namespace isolation
|
|
194
|
+
- JavaScript value transformation (`value_js`)
|
|
195
|
+
- Script provider (`type: script`)
|
|
196
|
+
|
|
197
|
+
### 3. Dependency Management
|
|
198
|
+
- Sequential workflow with `depends_on`
|
|
199
|
+
- Output passing between checks
|
|
200
|
+
- Memory access in JavaScript
|
|
201
|
+
|
|
202
|
+
### 4. Error Handling
|
|
203
|
+
- Input validation with `fail_if`
|
|
204
|
+
- Division by zero protection
|
|
205
|
+
- Invalid operation detection
|
|
206
|
+
- Timeout handling
|
|
207
|
+
|
|
208
|
+
## Customization Examples
|
|
209
|
+
|
|
210
|
+
### Change Input Method
|
|
211
|
+
|
|
212
|
+
Replace readline with any input source:
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// Slack bot
|
|
216
|
+
async function slackInputHandler(request: HumanInputRequest): Promise<string> {
|
|
217
|
+
const response = await slack.askUser(request.checkId, request.prompt);
|
|
218
|
+
return response.text;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Web API
|
|
222
|
+
async function apiInputHandler(request: HumanInputRequest): Promise<string> {
|
|
223
|
+
const response = await fetch('/api/input', {
|
|
224
|
+
method: 'POST',
|
|
225
|
+
body: JSON.stringify(request)
|
|
226
|
+
});
|
|
227
|
+
return (await response.json()).value;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// GUI Dialog
|
|
231
|
+
async function guiInputHandler(request: HumanInputRequest): Promise<string> {
|
|
232
|
+
return await electron.dialog.showInputBox({
|
|
233
|
+
title: request.checkId,
|
|
234
|
+
message: request.prompt
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Add More Operations
|
|
240
|
+
|
|
241
|
+
Extend the calculator in the `calculate` step:
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
content: `
|
|
245
|
+
const num1 = memory.get('number1', 'calculator');
|
|
246
|
+
const num2 = memory.get('number2', 'calculator');
|
|
247
|
+
const op = memory.get('operation', 'calculator');
|
|
248
|
+
|
|
249
|
+
let result;
|
|
250
|
+
switch(op) {
|
|
251
|
+
case '+': result = num1 + num2; break;
|
|
252
|
+
case '-': result = num1 - num2; break;
|
|
253
|
+
case '*': result = num1 * num2; break;
|
|
254
|
+
case '/':
|
|
255
|
+
if (num2 === 0) throw new Error('Division by zero');
|
|
256
|
+
result = num1 / num2;
|
|
257
|
+
break;
|
|
258
|
+
case '**': result = Math.pow(num1, num2); break; // Power
|
|
259
|
+
case '%': result = num1 % num2; break; // Modulo
|
|
260
|
+
case 'sqrt': result = Math.sqrt(num1); break; // Square root
|
|
261
|
+
default: throw new Error('Invalid operation');
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
memory.set('result', result, 'calculator');
|
|
265
|
+
return result;
|
|
266
|
+
`
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Add Input History
|
|
270
|
+
|
|
271
|
+
Store previous calculations:
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
checks: {
|
|
275
|
+
// ... existing checks ...
|
|
276
|
+
|
|
277
|
+
"save-to-history": {
|
|
278
|
+
type: "memory",
|
|
279
|
+
depends_on: ["calculate"],
|
|
280
|
+
operation: "append",
|
|
281
|
+
namespace: "calculator",
|
|
282
|
+
key: "history",
|
|
283
|
+
value_js: `{
|
|
284
|
+
num1: memory.get('number1', 'calculator'),
|
|
285
|
+
num2: memory.get('number2', 'calculator'),
|
|
286
|
+
operation: memory.get('operation', 'calculator'),
|
|
287
|
+
result: memory.get('result', 'calculator'),
|
|
288
|
+
timestamp: new Date().toISOString()
|
|
289
|
+
}`
|
|
290
|
+
},
|
|
291
|
+
|
|
292
|
+
"show-history": {
|
|
293
|
+
type: "log",
|
|
294
|
+
depends_on: ["save-to-history"],
|
|
295
|
+
message: "Previous calculations: {{ memory.get('history', 'calculator') | json }}"
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Real-World Use Cases
|
|
301
|
+
|
|
302
|
+
This pattern can be adapted for:
|
|
303
|
+
|
|
304
|
+
1. **Approval Workflows**
|
|
305
|
+
- Deployment approvals
|
|
306
|
+
- Code review confirmations
|
|
307
|
+
- Release gate checks
|
|
308
|
+
|
|
309
|
+
2. **Interactive Debugging**
|
|
310
|
+
- Runtime parameter input
|
|
311
|
+
- Configuration selection
|
|
312
|
+
- Environment validation
|
|
313
|
+
|
|
314
|
+
3. **Data Collection**
|
|
315
|
+
- User feedback gathering
|
|
316
|
+
- Bug report details
|
|
317
|
+
- Configuration wizards
|
|
318
|
+
|
|
319
|
+
4. **Quality Gates**
|
|
320
|
+
- Manual test verification
|
|
321
|
+
- Performance sign-off
|
|
322
|
+
- Security review approval
|
|
323
|
+
|
|
324
|
+
## Tips
|
|
325
|
+
|
|
326
|
+
1. **Always validate input** - Use `fail_if` or JavaScript validation
|
|
327
|
+
2. **Provide defaults** - For optional inputs or timeouts
|
|
328
|
+
3. **Use memory** - For complex workflows with multiple steps
|
|
329
|
+
4. **Handle errors** - Try/catch in JavaScript, validation in checks
|
|
330
|
+
5. **Test automated mode** - Use predefined inputs for CI/CD testing
|
|
331
|
+
|
|
332
|
+
## Troubleshooting
|
|
333
|
+
|
|
334
|
+
### "Empty input not allowed"
|
|
335
|
+
- Check `allow_empty: true` in config
|
|
336
|
+
- Provide a `default` value
|
|
337
|
+
- Ensure your hook doesn't return empty strings
|
|
338
|
+
|
|
339
|
+
### "Division by zero"
|
|
340
|
+
- The example includes validation for this
|
|
341
|
+
- Add similar checks for your operations
|
|
342
|
+
|
|
343
|
+
### "Invalid operation"
|
|
344
|
+
- Check the `fail_if` validation in `store-operation`
|
|
345
|
+
- Ensure allowed operations match your JavaScript switch
|
|
346
|
+
|
|
347
|
+
### Hook not being called
|
|
348
|
+
- Verify `HumanInputCheckProvider.setHooks()` is called before `engine.executeChecks()`
|
|
349
|
+
- Check that check type is `"human-input"`
|
|
350
|
+
- Ensure the hook returns a Promise<string>
|
|
351
|
+
|
|
352
|
+
## Next Steps
|
|
353
|
+
|
|
354
|
+
- Modify the calculator for your use case
|
|
355
|
+
- Implement a custom input handler (Slack, GUI, etc.)
|
|
356
|
+
- Add more complex workflows with branching
|
|
357
|
+
- Integrate with your existing tools and services
|
|
358
|
+
|
|
359
|
+
## See Also
|
|
360
|
+
|
|
361
|
+
- `examples/calculator-config.yaml` - YAML version for CLI usage
|
|
362
|
+
- `examples/human-input-example.yaml` - Basic human-input patterns
|
|
363
|
+
- `docs/human-input-feature-plan.md` - Complete feature specification
|
|
364
|
+
- `docs/human-input-implementation-summary.md` - Implementation details
|