vibecheck-ai 2.0.1 → 5.0.0
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/bin/.generated +25 -0
- package/bin/_deprecations.js +463 -0
- package/bin/_router.js +46 -0
- package/bin/cli-hygiene.js +241 -0
- package/bin/dev/run-v2-torture.js +30 -0
- package/bin/registry.js +656 -0
- package/bin/runners/CLI_REFACTOR_SUMMARY.md +229 -0
- package/bin/runners/ENHANCEMENT_GUIDE.md +121 -0
- package/bin/runners/REPORT_AUDIT.md +64 -0
- package/bin/runners/cli-utils.js +1070 -0
- package/bin/runners/context/ai-task-decomposer.js +337 -0
- package/bin/runners/context/analyzer.js +513 -0
- package/bin/runners/context/api-contracts.js +427 -0
- package/bin/runners/context/context-diff.js +342 -0
- package/bin/runners/context/context-pruner.js +291 -0
- package/bin/runners/context/dependency-graph.js +414 -0
- package/bin/runners/context/generators/claude.js +107 -0
- package/bin/runners/context/generators/codex.js +108 -0
- package/bin/runners/context/generators/copilot.js +119 -0
- package/bin/runners/context/generators/cursor-enhanced.js +2525 -0
- package/bin/runners/context/generators/cursor.js +514 -0
- package/bin/runners/context/generators/mcp.js +169 -0
- package/bin/runners/context/generators/windsurf.js +180 -0
- package/bin/runners/context/git-context.js +304 -0
- package/bin/runners/context/index.js +1110 -0
- package/bin/runners/context/insights.js +173 -0
- package/bin/runners/context/mcp-server/generate-rules.js +337 -0
- package/bin/runners/context/mcp-server/index.js +1176 -0
- package/bin/runners/context/mcp-server/package.json +24 -0
- package/bin/runners/context/memory.js +200 -0
- package/bin/runners/context/monorepo.js +215 -0
- package/bin/runners/context/multi-repo-federation.js +404 -0
- package/bin/runners/context/patterns.js +253 -0
- package/bin/runners/context/proof-context.js +1264 -0
- package/bin/runners/context/security-scanner.js +541 -0
- package/bin/runners/context/semantic-search.js +350 -0
- package/bin/runners/context/shared.js +264 -0
- package/bin/runners/context/team-conventions.js +336 -0
- package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -0
- package/bin/runners/lib/agent-firewall/ai/false-positive-analyzer.js +474 -0
- package/bin/runners/lib/agent-firewall/change-packet/builder.js +488 -0
- package/bin/runners/lib/agent-firewall/change-packet/schema.json +228 -0
- package/bin/runners/lib/agent-firewall/change-packet/store.js +200 -0
- package/bin/runners/lib/agent-firewall/claims/claim-types.js +21 -0
- package/bin/runners/lib/agent-firewall/claims/extractor.js +303 -0
- package/bin/runners/lib/agent-firewall/claims/patterns.js +24 -0
- package/bin/runners/lib/agent-firewall/critic/index.js +151 -0
- package/bin/runners/lib/agent-firewall/critic/judge.js +432 -0
- package/bin/runners/lib/agent-firewall/critic/prompts.js +305 -0
- package/bin/runners/lib/agent-firewall/enforcement/gateway.js +1059 -0
- package/bin/runners/lib/agent-firewall/enforcement/index.js +98 -0
- package/bin/runners/lib/agent-firewall/enforcement/mode.js +318 -0
- package/bin/runners/lib/agent-firewall/enforcement/orchestrator.js +484 -0
- package/bin/runners/lib/agent-firewall/enforcement/proof-artifact.js +418 -0
- package/bin/runners/lib/agent-firewall/enforcement/schemas/change-event.schema.json +173 -0
- package/bin/runners/lib/agent-firewall/enforcement/schemas/intent.schema.json +181 -0
- package/bin/runners/lib/agent-firewall/enforcement/schemas/verdict.schema.json +222 -0
- package/bin/runners/lib/agent-firewall/enforcement/verdict-v2.js +333 -0
- package/bin/runners/lib/agent-firewall/evidence/auth-evidence.js +88 -0
- package/bin/runners/lib/agent-firewall/evidence/contract-evidence.js +75 -0
- package/bin/runners/lib/agent-firewall/evidence/env-evidence.js +127 -0
- package/bin/runners/lib/agent-firewall/evidence/resolver.js +102 -0
- package/bin/runners/lib/agent-firewall/evidence/route-evidence.js +213 -0
- package/bin/runners/lib/agent-firewall/evidence/side-effect-evidence.js +145 -0
- package/bin/runners/lib/agent-firewall/fs-hook/daemon.js +19 -0
- package/bin/runners/lib/agent-firewall/fs-hook/installer.js +87 -0
- package/bin/runners/lib/agent-firewall/fs-hook/watcher.js +184 -0
- package/bin/runners/lib/agent-firewall/git-hook/pre-commit.js +163 -0
- package/bin/runners/lib/agent-firewall/ide-extension/cursor.js +107 -0
- package/bin/runners/lib/agent-firewall/ide-extension/vscode.js +68 -0
- package/bin/runners/lib/agent-firewall/ide-extension/windsurf.js +66 -0
- package/bin/runners/lib/agent-firewall/index.js +200 -0
- package/bin/runners/lib/agent-firewall/integration/index.js +20 -0
- package/bin/runners/lib/agent-firewall/integration/ship-gate.js +437 -0
- package/bin/runners/lib/agent-firewall/intent/alignment-engine.js +634 -0
- package/bin/runners/lib/agent-firewall/intent/auto-detect.js +426 -0
- package/bin/runners/lib/agent-firewall/intent/index.js +102 -0
- package/bin/runners/lib/agent-firewall/intent/schema.js +352 -0
- package/bin/runners/lib/agent-firewall/intent/store.js +283 -0
- package/bin/runners/lib/agent-firewall/interception/fs-interceptor.js +502 -0
- package/bin/runners/lib/agent-firewall/interception/index.js +23 -0
- package/bin/runners/lib/agent-firewall/interceptor/base.js +308 -0
- package/bin/runners/lib/agent-firewall/interceptor/cursor.js +35 -0
- package/bin/runners/lib/agent-firewall/interceptor/vscode.js +35 -0
- package/bin/runners/lib/agent-firewall/interceptor/windsurf.js +34 -0
- package/bin/runners/lib/agent-firewall/lawbook/distributor.js +465 -0
- package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +604 -0
- package/bin/runners/lib/agent-firewall/lawbook/index.js +304 -0
- package/bin/runners/lib/agent-firewall/lawbook/registry.js +514 -0
- package/bin/runners/lib/agent-firewall/lawbook/schema.js +420 -0
- package/bin/runners/lib/agent-firewall/logger.js +141 -0
- package/bin/runners/lib/agent-firewall/policy/default-policy.json +90 -0
- package/bin/runners/lib/agent-firewall/policy/engine.js +103 -0
- package/bin/runners/lib/agent-firewall/policy/loader.js +451 -0
- package/bin/runners/lib/agent-firewall/policy/rules/auth-drift.js +50 -0
- package/bin/runners/lib/agent-firewall/policy/rules/contract-drift.js +50 -0
- package/bin/runners/lib/agent-firewall/policy/rules/fake-success.js +79 -0
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +227 -0
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +191 -0
- package/bin/runners/lib/agent-firewall/policy/rules/scope.js +93 -0
- package/bin/runners/lib/agent-firewall/policy/rules/unsafe-side-effect.js +57 -0
- package/bin/runners/lib/agent-firewall/policy/schema.json +183 -0
- package/bin/runners/lib/agent-firewall/policy/verdict.js +54 -0
- package/bin/runners/lib/agent-firewall/proposal/extractor.js +394 -0
- package/bin/runners/lib/agent-firewall/proposal/index.js +212 -0
- package/bin/runners/lib/agent-firewall/proposal/schema.js +251 -0
- package/bin/runners/lib/agent-firewall/proposal/validator.js +386 -0
- package/bin/runners/lib/agent-firewall/reality/index.js +332 -0
- package/bin/runners/lib/agent-firewall/reality/state.js +625 -0
- package/bin/runners/lib/agent-firewall/reality/watcher.js +322 -0
- package/bin/runners/lib/agent-firewall/risk/index.js +173 -0
- package/bin/runners/lib/agent-firewall/risk/scorer.js +328 -0
- package/bin/runners/lib/agent-firewall/risk/thresholds.js +322 -0
- package/bin/runners/lib/agent-firewall/risk/vectors.js +421 -0
- package/bin/runners/lib/agent-firewall/session/collector.js +451 -0
- package/bin/runners/lib/agent-firewall/session/index.js +26 -0
- package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +472 -0
- package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +346 -0
- package/bin/runners/lib/agent-firewall/simulator/index.js +181 -0
- package/bin/runners/lib/agent-firewall/simulator/route-validator.js +380 -0
- package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +661 -0
- package/bin/runners/lib/agent-firewall/time-machine/index.js +267 -0
- package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +436 -0
- package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +490 -0
- package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +530 -0
- package/bin/runners/lib/agent-firewall/truthpack/index.js +67 -0
- package/bin/runners/lib/agent-firewall/truthpack/loader.js +137 -0
- package/bin/runners/lib/agent-firewall/unblock/planner.js +337 -0
- package/bin/runners/lib/agent-firewall/utils/ignore-checker.js +118 -0
- package/bin/runners/lib/ai-bridge.js +416 -0
- package/bin/runners/lib/analysis-core.js +309 -0
- package/bin/runners/lib/analyzers.js +2500 -0
- package/bin/runners/lib/api-client.js +269 -0
- package/bin/runners/lib/approve-output.js +235 -0
- package/bin/runners/lib/artifact-envelope.js +540 -0
- package/bin/runners/lib/assets/vibecheck-logo.png +0 -0
- package/bin/runners/lib/audit-bridge.js +391 -0
- package/bin/runners/lib/auth-shared.js +977 -0
- package/bin/runners/lib/auth-truth.js +193 -0
- package/bin/runners/lib/auth.js +215 -0
- package/bin/runners/lib/authority-badge.js +425 -0
- package/bin/runners/lib/backup.js +62 -0
- package/bin/runners/lib/billing.js +107 -0
- package/bin/runners/lib/checkpoint.js +941 -0
- package/bin/runners/lib/claims.js +118 -0
- package/bin/runners/lib/classify-output.js +204 -0
- package/bin/runners/lib/cleanup/engine.js +571 -0
- package/bin/runners/lib/cleanup/index.js +53 -0
- package/bin/runners/lib/cleanup/output.js +375 -0
- package/bin/runners/lib/cleanup/rules.js +1060 -0
- package/bin/runners/lib/cli-output.js +400 -0
- package/bin/runners/lib/cli-ui.js +540 -0
- package/bin/runners/lib/compliance-bridge-new.js +0 -0
- package/bin/runners/lib/compliance-bridge.js +165 -0
- package/bin/runners/lib/contracts/auth-contract.js +202 -0
- package/bin/runners/lib/contracts/env-contract.js +181 -0
- package/bin/runners/lib/contracts/external-contract.js +206 -0
- package/bin/runners/lib/contracts/guard.js +168 -0
- package/bin/runners/lib/contracts/index.js +89 -0
- package/bin/runners/lib/contracts/plan-validator.js +311 -0
- package/bin/runners/lib/contracts/route-contract.js +199 -0
- package/bin/runners/lib/contracts.js +804 -0
- package/bin/runners/lib/default-config.js +127 -0
- package/bin/runners/lib/detect.js +89 -0
- package/bin/runners/lib/detectors-v2.js +622 -0
- package/bin/runners/lib/doctor/autofix.js +254 -0
- package/bin/runners/lib/doctor/diagnosis-receipt.js +454 -0
- package/bin/runners/lib/doctor/failure-signatures.js +526 -0
- package/bin/runners/lib/doctor/fix-script.js +336 -0
- package/bin/runners/lib/doctor/index.js +37 -0
- package/bin/runners/lib/doctor/modules/build-tools.js +453 -0
- package/bin/runners/lib/doctor/modules/dependencies.js +325 -0
- package/bin/runners/lib/doctor/modules/index.js +105 -0
- package/bin/runners/lib/doctor/modules/network.js +250 -0
- package/bin/runners/lib/doctor/modules/os-quirks.js +706 -0
- package/bin/runners/lib/doctor/modules/project.js +312 -0
- package/bin/runners/lib/doctor/modules/repo-integrity.js +485 -0
- package/bin/runners/lib/doctor/modules/runtime.js +224 -0
- package/bin/runners/lib/doctor/modules/security.js +350 -0
- package/bin/runners/lib/doctor/modules/system.js +213 -0
- package/bin/runners/lib/doctor/modules/vibecheck.js +394 -0
- package/bin/runners/lib/doctor/reporter.js +262 -0
- package/bin/runners/lib/doctor/safe-repair.js +384 -0
- package/bin/runners/lib/doctor/service.js +262 -0
- package/bin/runners/lib/doctor/types.js +113 -0
- package/bin/runners/lib/doctor/ui.js +263 -0
- package/bin/runners/lib/doctor-enhanced.js +233 -0
- package/bin/runners/lib/doctor-output.js +226 -0
- package/bin/runners/lib/doctor-v2.js +608 -0
- package/bin/runners/lib/drift.js +425 -0
- package/bin/runners/lib/enforcement.js +72 -0
- package/bin/runners/lib/engine/ast-cache.js +210 -0
- package/bin/runners/lib/engine/auth-extractor.js +211 -0
- package/bin/runners/lib/engine/billing-extractor.js +112 -0
- package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
- package/bin/runners/lib/engine/env-extractor.js +207 -0
- package/bin/runners/lib/engine/express-extractor.js +208 -0
- package/bin/runners/lib/engine/extractors.js +849 -0
- package/bin/runners/lib/engine/index.js +207 -0
- package/bin/runners/lib/engine/repo-index.js +514 -0
- package/bin/runners/lib/engine/types.js +124 -0
- package/bin/runners/lib/engines/accessibility-engine.js +190 -0
- package/bin/runners/lib/engines/api-consistency-engine.js +162 -0
- package/bin/runners/lib/engines/ast-cache.js +99 -0
- package/bin/runners/lib/engines/attack-detector.js +1192 -0
- package/bin/runners/lib/engines/code-quality-engine.js +255 -0
- package/bin/runners/lib/engines/console-logs-engine.js +115 -0
- package/bin/runners/lib/engines/cross-file-analysis-engine.js +268 -0
- package/bin/runners/lib/engines/dead-code-engine.js +198 -0
- package/bin/runners/lib/engines/deprecated-api-engine.js +226 -0
- package/bin/runners/lib/engines/empty-catch-engine.js +150 -0
- package/bin/runners/lib/engines/file-filter.js +131 -0
- package/bin/runners/lib/engines/hardcoded-secrets-engine.js +251 -0
- package/bin/runners/lib/engines/mock-data-engine.js +272 -0
- package/bin/runners/lib/engines/parallel-processor.js +71 -0
- package/bin/runners/lib/engines/performance-issues-engine.js +265 -0
- package/bin/runners/lib/engines/security-vulnerabilities-engine.js +243 -0
- package/bin/runners/lib/engines/todo-fixme-engine.js +115 -0
- package/bin/runners/lib/engines/type-aware-engine.js +152 -0
- package/bin/runners/lib/engines/unsafe-regex-engine.js +225 -0
- package/bin/runners/lib/engines/vibecheck-engines/README.md +53 -0
- package/bin/runners/lib/engines/vibecheck-engines/index.js +15 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +139 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
- package/bin/runners/lib/engines/vibecheck-engines/package.json +13 -0
- package/bin/runners/lib/enterprise-detect.js +603 -0
- package/bin/runners/lib/enterprise-init.js +942 -0
- package/bin/runners/lib/entitlements-v2.js +265 -0
- package/bin/runners/lib/entitlements.generated.js +0 -0
- package/bin/runners/lib/entitlements.js +340 -0
- package/bin/runners/lib/env-resolver.js +417 -0
- package/bin/runners/lib/env-template.js +66 -0
- package/bin/runners/lib/env.js +189 -0
- package/bin/runners/lib/error-handler.js +368 -0
- package/bin/runners/lib/error-messages.js +289 -0
- package/bin/runners/lib/evidence-pack.js +684 -0
- package/bin/runners/lib/exit-codes.js +275 -0
- package/bin/runners/lib/extractors/client-calls.js +990 -0
- package/bin/runners/lib/extractors/fastify-route-dump.js +573 -0
- package/bin/runners/lib/extractors/fastify-routes.js +426 -0
- package/bin/runners/lib/extractors/index.js +363 -0
- package/bin/runners/lib/extractors/next-routes.js +524 -0
- package/bin/runners/lib/extractors/proof-graph.js +431 -0
- package/bin/runners/lib/extractors/route-matcher.js +451 -0
- package/bin/runners/lib/extractors/truthpack-v2.js +377 -0
- package/bin/runners/lib/extractors/ui-bindings.js +547 -0
- package/bin/runners/lib/finding-id.js +69 -0
- package/bin/runners/lib/finding-sorter.js +89 -0
- package/bin/runners/lib/findings-schema.js +281 -0
- package/bin/runners/lib/fingerprint.js +377 -0
- package/bin/runners/lib/firewall-prompt.js +50 -0
- package/bin/runners/lib/fix-output.js +228 -0
- package/bin/runners/lib/global-flags.js +250 -0
- package/bin/runners/lib/graph/graph-builder.js +265 -0
- package/bin/runners/lib/graph/html-renderer.js +413 -0
- package/bin/runners/lib/graph/index.js +32 -0
- package/bin/runners/lib/graph/runtime-collector.js +215 -0
- package/bin/runners/lib/graph/static-extractor.js +518 -0
- package/bin/runners/lib/help-formatter.js +413 -0
- package/bin/runners/lib/html-proof-report.js +913 -0
- package/bin/runners/lib/html-report.js +650 -0
- package/bin/runners/lib/init-wizard.js +601 -0
- package/bin/runners/lib/interactive-menu.js +1496 -0
- package/bin/runners/lib/json-output.js +76 -0
- package/bin/runners/lib/llm.js +75 -0
- package/bin/runners/lib/logger.js +38 -0
- package/bin/runners/lib/meter.js +61 -0
- package/bin/runners/lib/missions/briefing.js +427 -0
- package/bin/runners/lib/missions/checkpoint.js +753 -0
- package/bin/runners/lib/missions/evidence.js +126 -0
- package/bin/runners/lib/missions/hardening.js +851 -0
- package/bin/runners/lib/missions/plan.js +648 -0
- package/bin/runners/lib/missions/safety-gates.js +645 -0
- package/bin/runners/lib/missions/schema.js +478 -0
- package/bin/runners/lib/missions/templates.js +317 -0
- package/bin/runners/lib/next-action.js +560 -0
- package/bin/runners/lib/packs/bundle.js +675 -0
- package/bin/runners/lib/packs/evidence-pack.js +671 -0
- package/bin/runners/lib/packs/pack-factory.js +837 -0
- package/bin/runners/lib/packs/permissions-pack.js +686 -0
- package/bin/runners/lib/packs/proof-graph-pack.js +779 -0
- package/bin/runners/lib/patch.js +40 -0
- package/bin/runners/lib/permissions/auth-model.js +213 -0
- package/bin/runners/lib/permissions/idor-prover.js +205 -0
- package/bin/runners/lib/permissions/index.js +45 -0
- package/bin/runners/lib/permissions/matrix-builder.js +198 -0
- package/bin/runners/lib/pkgjson.js +28 -0
- package/bin/runners/lib/policy.js +295 -0
- package/bin/runners/lib/polish/accessibility.js +62 -0
- package/bin/runners/lib/polish/analyzer.js +93 -0
- package/bin/runners/lib/polish/backend.js +87 -0
- package/bin/runners/lib/polish/configuration.js +83 -0
- package/bin/runners/lib/polish/documentation.js +83 -0
- package/bin/runners/lib/polish/frontend.js +817 -0
- package/bin/runners/lib/polish/index.js +27 -0
- package/bin/runners/lib/polish/infrastructure.js +80 -0
- package/bin/runners/lib/polish/internationalization.js +85 -0
- package/bin/runners/lib/polish/libraries.js +180 -0
- package/bin/runners/lib/polish/observability.js +75 -0
- package/bin/runners/lib/polish/performance.js +64 -0
- package/bin/runners/lib/polish/privacy.js +110 -0
- package/bin/runners/lib/polish/resilience.js +92 -0
- package/bin/runners/lib/polish/security.js +78 -0
- package/bin/runners/lib/polish/seo.js +71 -0
- package/bin/runners/lib/polish/styles.js +62 -0
- package/bin/runners/lib/polish/utils.js +104 -0
- package/bin/runners/lib/preflight.js +142 -0
- package/bin/runners/lib/prerequisites.js +149 -0
- package/bin/runners/lib/prove-output.js +220 -0
- package/bin/runners/lib/reality/correlation-detectors.js +359 -0
- package/bin/runners/lib/reality/index.js +318 -0
- package/bin/runners/lib/reality/request-hashing.js +416 -0
- package/bin/runners/lib/reality/request-mapper.js +453 -0
- package/bin/runners/lib/reality/safety-rails.js +463 -0
- package/bin/runners/lib/reality/semantic-snapshot.js +408 -0
- package/bin/runners/lib/reality/toast-detector.js +393 -0
- package/bin/runners/lib/reality-findings.js +84 -0
- package/bin/runners/lib/reality-output.js +231 -0
- package/bin/runners/lib/receipts.js +179 -0
- package/bin/runners/lib/redact.js +29 -0
- package/bin/runners/lib/replay/capsule-manager.js +154 -0
- package/bin/runners/lib/replay/index.js +263 -0
- package/bin/runners/lib/replay/player.js +348 -0
- package/bin/runners/lib/replay/recorder.js +331 -0
- package/bin/runners/lib/report-engine.js +626 -0
- package/bin/runners/lib/report-html.js +1233 -0
- package/bin/runners/lib/report-output.js +366 -0
- package/bin/runners/lib/report-templates.js +967 -0
- package/bin/runners/lib/report.js +135 -0
- package/bin/runners/lib/route-detection.js +1209 -0
- package/bin/runners/lib/route-truth.js +1322 -0
- package/bin/runners/lib/safelist/index.js +96 -0
- package/bin/runners/lib/safelist/integration.js +334 -0
- package/bin/runners/lib/safelist/matcher.js +696 -0
- package/bin/runners/lib/safelist/schema.js +948 -0
- package/bin/runners/lib/safelist/store.js +438 -0
- package/bin/runners/lib/sandbox/index.js +59 -0
- package/bin/runners/lib/sandbox/proof-chain.js +399 -0
- package/bin/runners/lib/sandbox/sandbox-runner.js +205 -0
- package/bin/runners/lib/sandbox/worktree.js +174 -0
- package/bin/runners/lib/scan-cache.js +330 -0
- package/bin/runners/lib/scan-output-schema.js +344 -0
- package/bin/runners/lib/scan-output.js +631 -0
- package/bin/runners/lib/scan-runner.js +135 -0
- package/bin/runners/lib/schema-validator.js +350 -0
- package/bin/runners/lib/schemas/ajv-validator.js +464 -0
- package/bin/runners/lib/schemas/contracts.schema.json +160 -0
- package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
- package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
- package/bin/runners/lib/schemas/finding.schema.json +100 -0
- package/bin/runners/lib/schemas/mission-pack.schema.json +206 -0
- package/bin/runners/lib/schemas/proof-graph.schema.json +176 -0
- package/bin/runners/lib/schemas/reality-report.schema.json +162 -0
- package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
- package/bin/runners/lib/schemas/run-request.schema.json +108 -0
- package/bin/runners/lib/schemas/share-pack.schema.json +180 -0
- package/bin/runners/lib/schemas/ship-manifest.schema.json +251 -0
- package/bin/runners/lib/schemas/ship-report.schema.json +117 -0
- package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -0
- package/bin/runners/lib/schemas/validator.js +465 -0
- package/bin/runners/lib/schemas/verdict.schema.json +140 -0
- package/bin/runners/lib/score-history.js +282 -0
- package/bin/runners/lib/security-bridge.js +249 -0
- package/bin/runners/lib/server-usage.js +513 -0
- package/bin/runners/lib/share-pack.js +239 -0
- package/bin/runners/lib/ship-gate.js +832 -0
- package/bin/runners/lib/ship-manifest.js +1153 -0
- package/bin/runners/lib/ship-output-enterprise.js +239 -0
- package/bin/runners/lib/ship-output.js +1128 -0
- package/bin/runners/lib/snippets.js +67 -0
- package/bin/runners/lib/status-output.js +340 -0
- package/bin/runners/lib/terminal-ui.js +356 -0
- package/bin/runners/lib/truth.js +1691 -0
- package/bin/runners/lib/ui.js +562 -0
- package/bin/runners/lib/unified-cli-output.js +947 -0
- package/bin/runners/lib/unified-output.js +197 -0
- package/bin/runners/lib/upsell.js +410 -0
- package/bin/runners/lib/usage.js +153 -0
- package/bin/runners/lib/validate-patch.js +156 -0
- package/bin/runners/lib/verdict-engine.js +628 -0
- package/bin/runners/lib/verification.js +345 -0
- package/bin/runners/lib/why-tree.js +650 -0
- package/bin/runners/reality/engine.js +917 -0
- package/bin/runners/reality/flows.js +122 -0
- package/bin/runners/reality/report.js +378 -0
- package/bin/runners/reality/session.js +193 -0
- package/bin/runners/runAIAgent.js +229 -0
- package/bin/runners/runAgent.d.ts +5 -0
- package/bin/runners/runAgent.js +161 -0
- package/bin/runners/runAllowlist.js +418 -0
- package/bin/runners/runApprove.js +320 -0
- package/bin/runners/runAudit.js +692 -0
- package/bin/runners/runAuth.js +731 -0
- package/bin/runners/runCI.js +353 -0
- package/bin/runners/runCheckpoint.js +530 -0
- package/bin/runners/runClassify.js +928 -0
- package/bin/runners/runCleanup.js +343 -0
- package/bin/runners/runContext.d.ts +4 -0
- package/bin/runners/runContext.js +175 -0
- package/bin/runners/runDoctor.js +877 -0
- package/bin/runners/runEvidencePack.js +362 -0
- package/bin/runners/runFirewall.d.ts +5 -0
- package/bin/runners/runFirewall.js +134 -0
- package/bin/runners/runFirewallHook.d.ts +5 -0
- package/bin/runners/runFirewallHook.js +56 -0
- package/bin/runners/runFix.js +1355 -0
- package/bin/runners/runForge.js +451 -0
- package/bin/runners/runGuard.js +262 -0
- package/bin/runners/runInit.js +1927 -0
- package/bin/runners/runIntent.js +906 -0
- package/bin/runners/runKickoff.js +878 -0
- package/bin/runners/runLabs.js +424 -0
- package/bin/runners/runLaunch.js +2000 -0
- package/bin/runners/runLink.js +785 -0
- package/bin/runners/runMcp.js +1875 -0
- package/bin/runners/runPacks.js +2089 -0
- package/bin/runners/runPolish.d.ts +4 -0
- package/bin/runners/runPolish.js +390 -0
- package/bin/runners/runPromptFirewall.js +211 -0
- package/bin/runners/runProve.js +1411 -0
- package/bin/runners/runQuickstart.js +531 -0
- package/bin/runners/runReality.js +2260 -0
- package/bin/runners/runReport.js +726 -0
- package/bin/runners/runRuntime.js +110 -0
- package/bin/runners/runSafelist.js +1190 -0
- package/bin/runners/runScan.js +688 -0
- package/bin/runners/runShield.js +1282 -0
- package/bin/runners/runShip.js +1660 -0
- package/bin/runners/runTruth.d.ts +5 -0
- package/bin/runners/runTruth.js +101 -0
- package/bin/runners/runValidate.js +179 -0
- package/bin/runners/runWatch.js +478 -0
- package/bin/runners/utils.js +360 -0
- package/bin/scan.js +617 -0
- package/bin/vibecheck.js +1617 -0
- package/dist/guardrail/index.d.ts +2405 -0
- package/dist/guardrail/index.js +9747 -0
- package/dist/guardrail/index.js.map +1 -0
- package/dist/scanner/index.d.ts +282 -0
- package/dist/scanner/index.js +3395 -0
- package/dist/scanner/index.js.map +1 -0
- package/package.json +123 -104
- package/README.md +0 -491
- package/dist/index.js +0 -99711
- package/dist/index.js.map +0 -1
package/bin/registry.js
ADDED
|
@@ -0,0 +1,656 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vibecheck CLI Command Registry
|
|
3
|
+
*
|
|
4
|
+
* ═══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
* VERSION 5.0.0 — CLEAN SURFACE
|
|
6
|
+
* ═══════════════════════════════════════════════════════════════════════════════
|
|
7
|
+
*
|
|
8
|
+
* Single source of truth for the public CLI surface.
|
|
9
|
+
*
|
|
10
|
+
* 12 top-level commands. Everything else is a subcommand, alias, or hidden.
|
|
11
|
+
* Product story: Scan → Ship → Certify
|
|
12
|
+
*
|
|
13
|
+
* 2-tier model:
|
|
14
|
+
* - FREE ($0): Inspect & Observe
|
|
15
|
+
* - PRO ($49/mo): Fix, Prove & Enforce
|
|
16
|
+
*
|
|
17
|
+
* @version 5.0.0
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
"use strict";
|
|
21
|
+
|
|
22
|
+
// ─────────────────────────────────────────────────────────────
|
|
23
|
+
// 12 TOP-LEVEL COMMANDS (the only things users see in --help)
|
|
24
|
+
// ─────────────────────────────────────────────────────────────
|
|
25
|
+
const ALLOWED_COMMANDS = new Set([
|
|
26
|
+
"kickoff",
|
|
27
|
+
"scan",
|
|
28
|
+
"ship",
|
|
29
|
+
"fix",
|
|
30
|
+
"certify",
|
|
31
|
+
"report",
|
|
32
|
+
"reality",
|
|
33
|
+
"firewall",
|
|
34
|
+
"ci",
|
|
35
|
+
"mcp",
|
|
36
|
+
"config",
|
|
37
|
+
"doctor",
|
|
38
|
+
]);
|
|
39
|
+
|
|
40
|
+
function assertAllowedOnly(obj) {
|
|
41
|
+
const extras = Object.keys(obj).filter((k) => !ALLOWED_COMMANDS.has(k));
|
|
42
|
+
if (extras.length) {
|
|
43
|
+
throw new Error(`Registry contains non-allowed commands: ${extras.join(", ")}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ─────────────────────────────────────────────────────────────
|
|
48
|
+
// 12 COMMANDS — Clean Surface
|
|
49
|
+
// ─────────────────────────────────────────────────────────────
|
|
50
|
+
const COMMANDS = {
|
|
51
|
+
|
|
52
|
+
// ══════════════════════════════════════════════════════════════
|
|
53
|
+
// GETTING STARTED
|
|
54
|
+
// ══════════════════════════════════════════════════════════════
|
|
55
|
+
|
|
56
|
+
kickoff: {
|
|
57
|
+
description: "Get started in 60 seconds — detects your project, wires everything, first scan + verdict",
|
|
58
|
+
longDescription: "One command onboarding: link → detect → config → forge → first scan → first ship result → (optional) connect account. Absorbs init, setup, quickstart, link.",
|
|
59
|
+
tier: "free",
|
|
60
|
+
category: "start",
|
|
61
|
+
runner: () => require("./runners/runKickoff").runKickoff,
|
|
62
|
+
subcommands: [
|
|
63
|
+
{ name: "link", description: "Bind project (<10s, zero questions)" },
|
|
64
|
+
{ name: "config", description: "Edit project configuration" },
|
|
65
|
+
{ name: "doctor", description: "Check environment health" },
|
|
66
|
+
],
|
|
67
|
+
examples: [
|
|
68
|
+
{ command: "vibecheck kickoff", description: "60-second first run" },
|
|
69
|
+
{ command: "vibecheck kickoff --fast", description: "30-second fast mode" },
|
|
70
|
+
{ command: "vibecheck kickoff --no-ship", description: "Skip ship verdict" },
|
|
71
|
+
],
|
|
72
|
+
related: ["scan", "ship", "doctor"],
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
doctor: {
|
|
76
|
+
description: "Environment + dependency + config health check",
|
|
77
|
+
longDescription: "Comprehensive diagnostics for your development environment.",
|
|
78
|
+
tier: "free",
|
|
79
|
+
category: "start",
|
|
80
|
+
runner: () => require("./runners/runDoctor").runDoctor,
|
|
81
|
+
examples: [
|
|
82
|
+
{ command: "vibecheck doctor", description: "Run all health checks" },
|
|
83
|
+
{ command: "vibecheck doctor --fix", description: "Auto-fix detected issues" },
|
|
84
|
+
{ command: "vibecheck doctor --json", description: "Output as JSON" },
|
|
85
|
+
],
|
|
86
|
+
related: ["kickoff", "config"],
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// ══════════════════════════════════════════════════════════════
|
|
90
|
+
// CORE LOOP: Scan → Ship → Certify
|
|
91
|
+
// ══════════════════════════════════════════════════════════════
|
|
92
|
+
|
|
93
|
+
scan: {
|
|
94
|
+
description: "Analyze your project — find code that LOOKS done but DOESN'T work",
|
|
95
|
+
longDescription: "The unified analysis command. Detects dead routes, ghost env vars, fake success UI, auth drift, mock landmines, silent failures. Subcommands for targeted scans.",
|
|
96
|
+
tier: "free",
|
|
97
|
+
category: "core",
|
|
98
|
+
runner: () => require("./runners/runScan").runScan,
|
|
99
|
+
subcommands: [
|
|
100
|
+
{ name: "secrets", description: "Scan for leaked secrets & credentials" },
|
|
101
|
+
{ name: "vulns", description: "Scan dependencies for vulnerabilities (OSV/CVE)" },
|
|
102
|
+
{ name: "routes", description: "Scan for dead/orphan routes" },
|
|
103
|
+
{ name: "env", description: "Scan for ghost environment variables" },
|
|
104
|
+
{ name: "auth", description: "Scan for auth drift & unprotected endpoints" },
|
|
105
|
+
],
|
|
106
|
+
examples: [
|
|
107
|
+
{ command: "vibecheck scan", description: "Full project scan" },
|
|
108
|
+
{ command: "vibecheck scan secrets", description: "Secrets only" },
|
|
109
|
+
{ command: "vibecheck scan vulns", description: "Vulnerability scan" },
|
|
110
|
+
{ command: "vibecheck scan --deep", description: "Deep cross-file analysis" },
|
|
111
|
+
{ command: "vibecheck scan --fail-on critical", description: "CI gate mode" },
|
|
112
|
+
{ command: "vibecheck scan --sarif", description: "SARIF output for GitHub" },
|
|
113
|
+
],
|
|
114
|
+
related: ["ship", "fix", "certify"],
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
ship: {
|
|
118
|
+
description: "Verdict engine — SHIP / WARN / BLOCK",
|
|
119
|
+
longDescription: "The final word on whether your code is ready to ship. Includes preflight mode for comprehensive pre-release validation.",
|
|
120
|
+
tier: "pro",
|
|
121
|
+
category: "core",
|
|
122
|
+
runner: () => require("./runners/runShip").runShip,
|
|
123
|
+
subcommands: [
|
|
124
|
+
{ name: "preflight", description: "Pre-release validation wizard (last 10 min before deploy)" },
|
|
125
|
+
],
|
|
126
|
+
examples: [
|
|
127
|
+
{ command: "vibecheck ship", description: "Get shipping verdict" },
|
|
128
|
+
{ command: "vibecheck ship --strict", description: "Fail on warnings" },
|
|
129
|
+
{ command: "vibecheck ship preflight", description: "Full pre-release checklist" },
|
|
130
|
+
{ command: "vibecheck ship preflight --ci", description: "CI mode (non-interactive)" },
|
|
131
|
+
],
|
|
132
|
+
related: ["scan", "fix", "certify"],
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
fix: {
|
|
136
|
+
description: "Mission-based auto-fix with safety gates",
|
|
137
|
+
longDescription: "Fix Missions V2 — 'Missions, not chaos'. Small, reversible fix missions with pre-flight/post-flight safety gates, checkpoint-based rollback, and plan-only mode.",
|
|
138
|
+
tier: "pro",
|
|
139
|
+
category: "core",
|
|
140
|
+
runner: () => require("./runners/runFix").runFix,
|
|
141
|
+
subcommands: [
|
|
142
|
+
{ name: "missions", description: "List fix missions grouped by category" },
|
|
143
|
+
{ name: "checkpoint", description: "Snapshot & restore (time machine)" },
|
|
144
|
+
{ name: "polish", description: "Final production cleanup" },
|
|
145
|
+
],
|
|
146
|
+
examples: [
|
|
147
|
+
{ command: "vibecheck fix", description: "Plan missions (no changes)" },
|
|
148
|
+
{ command: "vibecheck fix --apply", description: "Apply AI fixes with checkpoints" },
|
|
149
|
+
{ command: "vibecheck fix --autopilot --apply", description: "Loop until SHIP or stuck" },
|
|
150
|
+
{ command: "vibecheck fix --rollback M_xxx", description: "Rollback mission" },
|
|
151
|
+
{ command: "vibecheck fix missions", description: "View grouped fix tasks" },
|
|
152
|
+
{ command: "vibecheck fix checkpoint list", description: "List snapshots" },
|
|
153
|
+
{ command: "vibecheck fix checkpoint restore latest", description: "Restore snapshot" },
|
|
154
|
+
],
|
|
155
|
+
related: ["scan", "ship"],
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
certify: {
|
|
159
|
+
description: "Full verification chain — ISL + Reality + Chaos + Ship score + badge",
|
|
160
|
+
longDescription: "The flagship command. Runs the complete proof pipeline: truth → verify → prove → seal → badge. Produces a shareable certification artifact.",
|
|
161
|
+
tier: "pro",
|
|
162
|
+
category: "core",
|
|
163
|
+
runner: () => require("./runners/runProve").runProve,
|
|
164
|
+
subcommands: [
|
|
165
|
+
{ name: "verify", description: "Run ISL verification only" },
|
|
166
|
+
{ name: "prove", description: "Full proof loop (forge → scan → reality → ship)" },
|
|
167
|
+
{ name: "seal", description: "Generate badge + cryptographic attestation" },
|
|
168
|
+
{ name: "truth", description: "Build/rebuild truthpack artifacts" },
|
|
169
|
+
],
|
|
170
|
+
examples: [
|
|
171
|
+
{ command: "vibecheck certify", description: "Run full certification" },
|
|
172
|
+
{ command: "vibecheck certify --badge", description: "Include badge generation" },
|
|
173
|
+
{ command: "vibecheck certify --reality", description: "Include browser verification" },
|
|
174
|
+
{ command: "vibecheck certify --artifacts", description: "Generate truthpack + evidence" },
|
|
175
|
+
{ command: "vibecheck certify verify", description: "Verification only" },
|
|
176
|
+
{ command: "vibecheck certify seal --format svg", description: "Generate SVG badge" },
|
|
177
|
+
],
|
|
178
|
+
related: ["ship", "reality", "report"],
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
// ══════════════════════════════════════════════════════════════
|
|
182
|
+
// EVIDENCE & ENFORCEMENT
|
|
183
|
+
// ══════════════════════════════════════════════════════════════
|
|
184
|
+
|
|
185
|
+
report: {
|
|
186
|
+
description: "Generate reports — HTML, SARIF, JSON, PDF, evidence bundles",
|
|
187
|
+
longDescription: "Produce shareable artifacts: reports, evidence packs, proof graphs, permission matrices. Multiple output formats.",
|
|
188
|
+
tier: "free",
|
|
189
|
+
category: "output",
|
|
190
|
+
runner: () => require("./runners/runPacks").runPacks,
|
|
191
|
+
subcommands: [
|
|
192
|
+
{ name: "html", description: "Generate HTML report" },
|
|
193
|
+
{ name: "sarif", description: "Generate SARIF for GitHub" },
|
|
194
|
+
{ name: "bundle", description: "ZIP bundle + manifest + HTML index" },
|
|
195
|
+
{ name: "evidence", description: "Bundle videos, traces, screenshots" },
|
|
196
|
+
{ name: "graph", description: "Proof graph with receipt cross-links" },
|
|
197
|
+
{ name: "permissions", description: "AuthZ matrix, roles, protected routes" },
|
|
198
|
+
],
|
|
199
|
+
examples: [
|
|
200
|
+
{ command: "vibecheck report", description: "Default HTML report" },
|
|
201
|
+
{ command: "vibecheck report sarif", description: "SARIF for GitHub integration" },
|
|
202
|
+
{ command: "vibecheck report bundle", description: "Full evidence bundle" },
|
|
203
|
+
{ command: "vibecheck report --output ./reports", description: "Custom output dir" },
|
|
204
|
+
],
|
|
205
|
+
related: ["certify", "scan", "ship"],
|
|
206
|
+
},
|
|
207
|
+
|
|
208
|
+
reality: {
|
|
209
|
+
description: "Browser-based runtime verification (Playwright)",
|
|
210
|
+
longDescription: "Verify your app's actual runtime behavior with Playwright-powered browser testing. Prove what users see is real.",
|
|
211
|
+
tier: "pro",
|
|
212
|
+
category: "verify",
|
|
213
|
+
runner: () => require("./runners/runReality").runReality,
|
|
214
|
+
subcommands: [
|
|
215
|
+
{ name: "run", description: "Run reality verification (default)" },
|
|
216
|
+
{ name: "replay", description: "Replay a previous reality session" },
|
|
217
|
+
],
|
|
218
|
+
examples: [
|
|
219
|
+
{ command: "vibecheck reality", description: "Auto-detect and test" },
|
|
220
|
+
{ command: "vibecheck reality run --url http://localhost:3000", description: "Test localhost" },
|
|
221
|
+
{ command: "vibecheck reality replay", description: "Replay last session" },
|
|
222
|
+
],
|
|
223
|
+
related: ["certify", "ship"],
|
|
224
|
+
},
|
|
225
|
+
|
|
226
|
+
firewall: {
|
|
227
|
+
description: "Agent Firewall — intercept, validate, and enforce AI actions",
|
|
228
|
+
longDescription: "Unified AI enforcement layer. Control what AI agents can do in your codebase. Observe, protect, or lockdown modes. Intent tracking and drift detection.",
|
|
229
|
+
tier: "pro",
|
|
230
|
+
category: "enforce",
|
|
231
|
+
runner: () => require("./runners/runShield").runShield,
|
|
232
|
+
subcommands: [
|
|
233
|
+
{ name: "on", description: "Enable firewall (default: observe mode)" },
|
|
234
|
+
{ name: "off", description: "Disable firewall" },
|
|
235
|
+
{ name: "mode", description: "Set mode: observe | protect | lockdown" },
|
|
236
|
+
{ name: "status", description: "Show current firewall status" },
|
|
237
|
+
{ name: "rules", description: "Manage firewall rules / forge AI rules" },
|
|
238
|
+
{ name: "intent", description: "Declare/show/clear current intent" },
|
|
239
|
+
{ name: "approve", description: "Review and approve session changes" },
|
|
240
|
+
],
|
|
241
|
+
examples: [
|
|
242
|
+
{ command: "vibecheck firewall on", description: "Enable in observe mode" },
|
|
243
|
+
{ command: "vibecheck firewall mode protect", description: "Switch to protect mode" },
|
|
244
|
+
{ command: "vibecheck firewall status", description: "Show status + stats" },
|
|
245
|
+
{ command: "vibecheck firewall intent set -s \"fix login bug\"", description: "Set intent" },
|
|
246
|
+
{ command: "vibecheck firewall rules", description: "Manage enforcement rules" },
|
|
247
|
+
{ command: "vibecheck firewall approve", description: "Review AI changes" },
|
|
248
|
+
],
|
|
249
|
+
related: ["scan", "certify", "mcp"],
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
// ══════════════════════════════════════════════════════════════
|
|
253
|
+
// AUTOMATION & CONFIG
|
|
254
|
+
// ══════════════════════════════════════════════════════════════
|
|
255
|
+
|
|
256
|
+
ci: {
|
|
257
|
+
description: "One-command enterprise CI wiring (GitHub Actions, GitLab, etc.)",
|
|
258
|
+
longDescription: "Auto-detect your stack and create optimized CI workflows with SARIF output, PR comments, and status checks.",
|
|
259
|
+
tier: "free",
|
|
260
|
+
category: "automation",
|
|
261
|
+
runner: () => require("./runners/runCI").runCI,
|
|
262
|
+
examples: [
|
|
263
|
+
{ command: "vibecheck ci", description: "Auto-detect and create CI" },
|
|
264
|
+
{ command: "vibecheck ci --dry-run", description: "Preview without creating files" },
|
|
265
|
+
{ command: "vibecheck ci --full", description: "All workflows (scan, ship, e2e, security)" },
|
|
266
|
+
{ command: "vibecheck ci --validate", description: "Validate existing workflows" },
|
|
267
|
+
],
|
|
268
|
+
related: ["scan", "ship", "report"],
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
mcp: {
|
|
272
|
+
description: "Start MCP server for AI IDEs (Cursor, Windsurf, Claude)",
|
|
273
|
+
longDescription: "Launch an MCP server for AI IDE integration. 30+ tools for truth verification, intent tracking, and agent management.",
|
|
274
|
+
tier: "pro",
|
|
275
|
+
category: "automation",
|
|
276
|
+
runner: () => require("./runners/runMcp").runMcp,
|
|
277
|
+
examples: [
|
|
278
|
+
{ command: "vibecheck mcp", description: "Start MCP server" },
|
|
279
|
+
{ command: "vibecheck mcp --port 3099", description: "Custom port" },
|
|
280
|
+
],
|
|
281
|
+
related: ["firewall", "certify"],
|
|
282
|
+
},
|
|
283
|
+
|
|
284
|
+
config: {
|
|
285
|
+
description: "Manage project configuration, safelist, and settings",
|
|
286
|
+
longDescription: "Central config management. Includes safelist (finding suppression with justification & expiry), project settings, and context management.",
|
|
287
|
+
tier: "free",
|
|
288
|
+
category: "automation",
|
|
289
|
+
runner: () => require("./runners/runSafelist").runSafelist,
|
|
290
|
+
subcommands: [
|
|
291
|
+
{ name: "safelist", description: "Manage finding suppressions (add, remove, report, clean)" },
|
|
292
|
+
{ name: "context", description: "Manage AI context / truthpack settings" },
|
|
293
|
+
{ name: "auth", description: "Authentication (login, logout, whoami)" },
|
|
294
|
+
],
|
|
295
|
+
examples: [
|
|
296
|
+
{ command: "vibecheck config", description: "Show current config" },
|
|
297
|
+
{ command: "vibecheck config safelist", description: "List safelist entries" },
|
|
298
|
+
{ command: "vibecheck config safelist add --id MOCK_xyz --reason 'Test data'", description: "Suppress finding" },
|
|
299
|
+
{ command: "vibecheck config auth login", description: "Log in to VibeCheck" },
|
|
300
|
+
{ command: "vibecheck config auth whoami", description: "Show current user" },
|
|
301
|
+
],
|
|
302
|
+
related: ["kickoff", "doctor"],
|
|
303
|
+
},
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// Validate
|
|
307
|
+
assertAllowedOnly(COMMANDS);
|
|
308
|
+
|
|
309
|
+
// ─────────────────────────────────────────────────────────────
|
|
310
|
+
// SUBCOMMAND ROUTING
|
|
311
|
+
// ─────────────────────────────────────────────────────────────
|
|
312
|
+
// Maps "parent:sub" → runner require path + export name.
|
|
313
|
+
// main() in vibecheck.js consults this before calling the default runner.
|
|
314
|
+
const SUBCOMMAND_MAP = {
|
|
315
|
+
// scan subcommands
|
|
316
|
+
"scan:secrets": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "secrets"] },
|
|
317
|
+
"scan:vulns": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "vulnerabilities"] },
|
|
318
|
+
"scan:routes": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "routes"] },
|
|
319
|
+
"scan:env": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "env"] },
|
|
320
|
+
"scan:auth": { runner: () => require("./runners/runScan").runScan, prependArgs: ["--category", "auth"] },
|
|
321
|
+
|
|
322
|
+
// ship subcommands
|
|
323
|
+
"ship:preflight": { runner: () => require("./runners/runLaunch").runLaunch },
|
|
324
|
+
|
|
325
|
+
// fix subcommands
|
|
326
|
+
"fix:missions": { runner: () => require("./runners/runFix").runFix, prependArgs: ["--list-missions"] },
|
|
327
|
+
"fix:checkpoint": { runner: () => require("./runners/runCheckpoint").runCheckpoint },
|
|
328
|
+
"fix:polish": { runner: () => require("./runners/runPolish").runPolish },
|
|
329
|
+
|
|
330
|
+
// certify subcommands
|
|
331
|
+
"certify:verify": { runner: () => require("./runners/runProve").runProve, prependArgs: ["--mode", "verify"] },
|
|
332
|
+
"certify:prove": { runner: () => require("./runners/runProve").runProve },
|
|
333
|
+
"certify:seal": { runner: () => require("./runners/runShip").runSeal },
|
|
334
|
+
"certify:truth": { runner: () => require("./runners/runForge").runForge },
|
|
335
|
+
|
|
336
|
+
// report subcommands
|
|
337
|
+
"report:html": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["report", "--format", "html"] },
|
|
338
|
+
"report:sarif": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["report", "--format", "sarif"] },
|
|
339
|
+
"report:bundle": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["bundle"] },
|
|
340
|
+
"report:evidence": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["evidence"] },
|
|
341
|
+
"report:graph": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["graph"] },
|
|
342
|
+
"report:permissions": { runner: () => require("./runners/runPacks").runPacks, prependArgs: ["permissions"] },
|
|
343
|
+
|
|
344
|
+
// reality subcommands
|
|
345
|
+
"reality:run": { runner: () => require("./runners/runReality").runReality },
|
|
346
|
+
"reality:replay": { runner: () => require("./runners/runReality").runReality, prependArgs: ["--replay"] },
|
|
347
|
+
|
|
348
|
+
// firewall subcommands
|
|
349
|
+
"firewall:on": { runner: () => require("./runners/runShield").runShield, prependArgs: ["observe"] },
|
|
350
|
+
"firewall:off": { runner: () => require("./runners/runShield").runShield, prependArgs: ["off"] },
|
|
351
|
+
"firewall:mode": { runner: () => require("./runners/runShield").runShield },
|
|
352
|
+
"firewall:status": { runner: () => require("./runners/runShield").runShield, prependArgs: ["status"] },
|
|
353
|
+
"firewall:rules": { runner: () => require("./runners/runForge").runForge },
|
|
354
|
+
"firewall:intent": { runner: () => require("./runners/runIntent").runIntent },
|
|
355
|
+
"firewall:approve": { runner: () => require("./runners/runApprove").runApprove },
|
|
356
|
+
|
|
357
|
+
// config subcommands
|
|
358
|
+
"config:safelist": { runner: () => require("./runners/runSafelist").runSafelist },
|
|
359
|
+
"config:context": { runner: () => require("./runners/runForge").runForge, prependArgs: ["--context-only"] },
|
|
360
|
+
"config:auth": { runner: () => require("./runners/runAuth").runAuth },
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
// ─────────────────────────────────────────────────────────────
|
|
364
|
+
// HIDDEN COMMANDS — work but don't show in --help
|
|
365
|
+
// ─────────────────────────────────────────────────────────────
|
|
366
|
+
// Power-user / internal pipeline commands that still resolve.
|
|
367
|
+
const HIDDEN_COMMANDS = {
|
|
368
|
+
checkpoint: { runner: () => require("./runners/runCheckpoint").runCheckpoint },
|
|
369
|
+
forge: { runner: () => require("./runners/runForge").runForge },
|
|
370
|
+
polish: { runner: () => require("./runners/runPolish").runPolish },
|
|
371
|
+
auth: { runner: () => require("./runners/runAuth").runAuth, skipAuth: true },
|
|
372
|
+
watch: { runner: () => require("./runners/runWatch").runWatch },
|
|
373
|
+
labs: { runner: () => require("./runners/runLabs").runLabs, skipAuth: true },
|
|
374
|
+
intent: { runner: () => require("./runners/runIntent").runIntent },
|
|
375
|
+
approve: { runner: () => require("./runners/runApprove").runApprove },
|
|
376
|
+
seal: { runner: () => require("./runners/runShip").runSeal },
|
|
377
|
+
prove: { runner: () => require("./runners/runProve").runProve },
|
|
378
|
+
safelist: { runner: () => require("./runners/runSafelist").runSafelist },
|
|
379
|
+
packs: { runner: () => require("./runners/runPacks").runPacks },
|
|
380
|
+
link: { runner: () => require("./runners/runLink").runLink },
|
|
381
|
+
audit: { runner: () => require("./runners/runAudit").runAudit },
|
|
382
|
+
shield: { runner: () => require("./runners/runShield").runShield },
|
|
383
|
+
launch: { runner: () => require("./runners/runLaunch").runLaunch },
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
// ─────────────────────────────────────────────────────────────
|
|
387
|
+
// ALIAS MAP — old names → new 12 top-level commands
|
|
388
|
+
// ─────────────────────────────────────────────────────────────
|
|
389
|
+
const ALIAS_MAP = {
|
|
390
|
+
// → kickoff
|
|
391
|
+
"init": "kickoff",
|
|
392
|
+
"setup": "kickoff",
|
|
393
|
+
"quickstart": "kickoff",
|
|
394
|
+
"qs": "kickoff",
|
|
395
|
+
"start": "kickoff",
|
|
396
|
+
"onboard": "kickoff",
|
|
397
|
+
"configure": "kickoff",
|
|
398
|
+
|
|
399
|
+
// → scan
|
|
400
|
+
"audit": "scan",
|
|
401
|
+
"check": "scan",
|
|
402
|
+
"s": "scan",
|
|
403
|
+
"validate": "scan",
|
|
404
|
+
|
|
405
|
+
// → ship
|
|
406
|
+
"launch": "ship",
|
|
407
|
+
"gate": "ship",
|
|
408
|
+
"ci-gate": "ship",
|
|
409
|
+
"preflight": "ship",
|
|
410
|
+
"prelaunch": "ship",
|
|
411
|
+
|
|
412
|
+
// → fix
|
|
413
|
+
"f": "fix",
|
|
414
|
+
"repair": "fix",
|
|
415
|
+
"missions": "fix",
|
|
416
|
+
|
|
417
|
+
// → certify
|
|
418
|
+
"verify": "certify",
|
|
419
|
+
"prove": "certify",
|
|
420
|
+
"seal": "certify",
|
|
421
|
+
"badge": "certify",
|
|
422
|
+
"attest": "certify",
|
|
423
|
+
"truth": "certify",
|
|
424
|
+
"truthpack": "certify",
|
|
425
|
+
"p": "certify",
|
|
426
|
+
|
|
427
|
+
// → report
|
|
428
|
+
"packs": "report",
|
|
429
|
+
"report": "report",
|
|
430
|
+
"html": "report",
|
|
431
|
+
"artifact": "report",
|
|
432
|
+
"artifacts": "report",
|
|
433
|
+
"evidence-pack": "report",
|
|
434
|
+
"bundle": "report",
|
|
435
|
+
"permissions-pack": "report",
|
|
436
|
+
"proof-graph": "report",
|
|
437
|
+
|
|
438
|
+
// → reality
|
|
439
|
+
"browser": "reality",
|
|
440
|
+
"e2e": "reality",
|
|
441
|
+
|
|
442
|
+
// → firewall
|
|
443
|
+
"shield": "firewall",
|
|
444
|
+
"guard": "firewall",
|
|
445
|
+
"ai-guard": "firewall",
|
|
446
|
+
"enforce": "firewall",
|
|
447
|
+
"intent": "firewall",
|
|
448
|
+
"approve": "firewall",
|
|
449
|
+
|
|
450
|
+
// → config
|
|
451
|
+
"safelist": "config",
|
|
452
|
+
"allowlist": "config",
|
|
453
|
+
"al": "config",
|
|
454
|
+
"suppress": "config",
|
|
455
|
+
"context": "config",
|
|
456
|
+
"ctx": "config",
|
|
457
|
+
"rules": "config",
|
|
458
|
+
"ai-rules": "config",
|
|
459
|
+
"mdc": "config",
|
|
460
|
+
"brain": "config",
|
|
461
|
+
|
|
462
|
+
// → doctor
|
|
463
|
+
"health": "doctor",
|
|
464
|
+
"diag": "doctor",
|
|
465
|
+
|
|
466
|
+
// Hidden shortcuts
|
|
467
|
+
"checkpoint": "fix",
|
|
468
|
+
"cp": "fix",
|
|
469
|
+
"snap": "fix",
|
|
470
|
+
"snapshot": "fix",
|
|
471
|
+
"timemachine": "fix",
|
|
472
|
+
"rollback": "fix",
|
|
473
|
+
"w": "scan",
|
|
474
|
+
"dev": "scan",
|
|
475
|
+
"prod": "fix",
|
|
476
|
+
"final": "fix",
|
|
477
|
+
|
|
478
|
+
// Auth shortcuts → config
|
|
479
|
+
"login": "config",
|
|
480
|
+
"logout": "config",
|
|
481
|
+
"whoami": "config",
|
|
482
|
+
"me": "config",
|
|
483
|
+
"signin": "config",
|
|
484
|
+
"signout": "config",
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
// ─────────────────────────────────────────────────────────────
|
|
488
|
+
// DEPRECATION NOTICES for renamed commands
|
|
489
|
+
// ─────────────────────────────────────────────────────────────
|
|
490
|
+
const DEPRECATION_MAP = {
|
|
491
|
+
"audit": { target: "scan", message: "'audit' is now 'scan'" },
|
|
492
|
+
"check": { target: "scan", message: "'check' is now 'scan'" },
|
|
493
|
+
"validate": { target: "scan", message: "'validate' is now 'scan'" },
|
|
494
|
+
"launch": { target: "ship preflight", message: "'launch' is now 'ship preflight'" },
|
|
495
|
+
"init": { target: "kickoff", message: "'init' is now 'kickoff'" },
|
|
496
|
+
"setup": { target: "kickoff", message: "'setup' is now 'kickoff'" },
|
|
497
|
+
"quickstart": { target: "kickoff", message: "'quickstart' is now 'kickoff'" },
|
|
498
|
+
"link": { target: "kickoff", message: "'link' is now part of 'kickoff'" },
|
|
499
|
+
"shield": { target: "firewall", message: "'shield' is now 'firewall'" },
|
|
500
|
+
"guard": { target: "firewall", message: "'guard' is now 'firewall'" },
|
|
501
|
+
"prove": { target: "certify", message: "'prove' is now 'certify'" },
|
|
502
|
+
"verify": { target: "certify", message: "'verify' is now 'certify'" },
|
|
503
|
+
"seal": { target: "certify seal", message: "'seal' is now 'certify seal'" },
|
|
504
|
+
"badge": { target: "certify seal", message: "'badge' is now 'certify seal'" },
|
|
505
|
+
"truth": { target: "certify truth", message: "'truth' is now 'certify truth'" },
|
|
506
|
+
"truthpack": { target: "certify truth", message: "'truthpack' is now 'certify truth'" },
|
|
507
|
+
"packs": { target: "report", message: "'packs' is now 'report'" },
|
|
508
|
+
"safelist": { target: "config safelist", message: "'safelist' is now 'config safelist'" },
|
|
509
|
+
"allowlist": { target: "config safelist", message: "'allowlist' is now 'config safelist'" },
|
|
510
|
+
"context": { target: "config context", message: "'context' is now 'config context'" },
|
|
511
|
+
"ctx": { target: "config context", message: "'ctx' is now 'config context'" },
|
|
512
|
+
"forge": { target: "firewall rules", message: "'forge' is now 'firewall rules' (or still works directly)" },
|
|
513
|
+
"intent": { target: "firewall intent", message: "'intent' is now 'firewall intent'" },
|
|
514
|
+
"approve": { target: "firewall approve", message: "'approve' is now 'firewall approve'" },
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
function isDeprecated(cmd) {
|
|
518
|
+
return cmd in DEPRECATION_MAP;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
function getDeprecationTarget(cmd) {
|
|
522
|
+
const dep = DEPRECATION_MAP[cmd];
|
|
523
|
+
return dep ? dep.target : null;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
function getDeprecationMessage(cmd) {
|
|
527
|
+
const dep = DEPRECATION_MAP[cmd];
|
|
528
|
+
return dep ? dep.message : null;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
// All command names (top-level + aliases + hidden)
|
|
532
|
+
const ALL_COMMANDS = new Set([
|
|
533
|
+
...Object.keys(COMMANDS),
|
|
534
|
+
...Object.keys(ALIAS_MAP),
|
|
535
|
+
...Object.keys(HIDDEN_COMMANDS),
|
|
536
|
+
]);
|
|
537
|
+
|
|
538
|
+
// ─────────────────────────────────────────────────────────────
|
|
539
|
+
// TIER HELPERS
|
|
540
|
+
// ─────────────────────────────────────────────────────────────
|
|
541
|
+
function isPro(tier) {
|
|
542
|
+
return tier === "pro";
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
function requiresPro(commandName) {
|
|
546
|
+
const cmd = COMMANDS[commandName];
|
|
547
|
+
return cmd && cmd.tier === "pro";
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
function getFreeCommands() {
|
|
551
|
+
return Object.entries(COMMANDS)
|
|
552
|
+
.filter(([, cmd]) => cmd.tier === "free")
|
|
553
|
+
.map(([name]) => name);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
function getProCommands() {
|
|
557
|
+
return Object.entries(COMMANDS)
|
|
558
|
+
.filter(([, cmd]) => cmd.tier === "pro")
|
|
559
|
+
.map(([name]) => name);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// ─────────────────────────────────────────────────────────────
|
|
563
|
+
// GETTERS
|
|
564
|
+
// ─────────────────────────────────────────────────────────────
|
|
565
|
+
|
|
566
|
+
function getRunner(cmd, opts = {}) {
|
|
567
|
+
// Check top-level commands first
|
|
568
|
+
let def = COMMANDS[cmd];
|
|
569
|
+
|
|
570
|
+
// Then check hidden commands
|
|
571
|
+
if (!def) {
|
|
572
|
+
def = HIDDEN_COMMANDS[cmd];
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (!def) {
|
|
576
|
+
return null;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
if (!def.runner) {
|
|
580
|
+
return null;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
try {
|
|
584
|
+
return def.runner();
|
|
585
|
+
} catch (e) {
|
|
586
|
+
if (opts.red && opts.reset) {
|
|
587
|
+
console.error(`${opts.red}× Failed to load runner for ${cmd}: ${e.message}${opts.reset}`);
|
|
588
|
+
}
|
|
589
|
+
return null;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function getSubcommandRunner(parent, sub) {
|
|
594
|
+
const key = `${parent}:${sub}`;
|
|
595
|
+
const def = SUBCOMMAND_MAP[key];
|
|
596
|
+
if (!def) return null;
|
|
597
|
+
try {
|
|
598
|
+
return { runner: def.runner(), prependArgs: def.prependArgs || [] };
|
|
599
|
+
} catch (e) {
|
|
600
|
+
return null;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
function getCommand(name) {
|
|
605
|
+
return COMMANDS[name] || null;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
function isValidCommand(name) {
|
|
609
|
+
return name in COMMANDS || name in HIDDEN_COMMANDS;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
function listCommands() {
|
|
613
|
+
return Object.keys(COMMANDS);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
// ─────────────────────────────────────────────────────────────
|
|
617
|
+
// EXPORTS
|
|
618
|
+
// ─────────────────────────────────────────────────────────────
|
|
619
|
+
module.exports = {
|
|
620
|
+
// Core data
|
|
621
|
+
COMMANDS,
|
|
622
|
+
ALLOWED_COMMANDS,
|
|
623
|
+
ALIAS_MAP,
|
|
624
|
+
ALL_COMMANDS,
|
|
625
|
+
SUBCOMMAND_MAP,
|
|
626
|
+
HIDDEN_COMMANDS,
|
|
627
|
+
DEPRECATION_MAP,
|
|
628
|
+
|
|
629
|
+
// Tier helpers
|
|
630
|
+
isPro,
|
|
631
|
+
requiresPro,
|
|
632
|
+
getFreeCommands,
|
|
633
|
+
getProCommands,
|
|
634
|
+
|
|
635
|
+
// Getters
|
|
636
|
+
getRunner,
|
|
637
|
+
getSubcommandRunner,
|
|
638
|
+
getCommand,
|
|
639
|
+
isValidCommand,
|
|
640
|
+
listCommands,
|
|
641
|
+
|
|
642
|
+
// Deprecation
|
|
643
|
+
isDeprecated,
|
|
644
|
+
getDeprecationTarget,
|
|
645
|
+
getDeprecationMessage,
|
|
646
|
+
|
|
647
|
+
getCommandsByTier: (tier) =>
|
|
648
|
+
Object.entries(COMMANDS)
|
|
649
|
+
.filter(([, cmd]) => cmd.tier === tier)
|
|
650
|
+
.map(([name, cmd]) => ({ name, ...cmd })),
|
|
651
|
+
|
|
652
|
+
getCommandsByCategory: (category) =>
|
|
653
|
+
Object.entries(COMMANDS)
|
|
654
|
+
.filter(([, cmd]) => cmd.category === category)
|
|
655
|
+
.map(([name, cmd]) => ({ name, ...cmd })),
|
|
656
|
+
};
|