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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat History Insights Module
|
|
3
|
+
* Tracks context generation sessions and usage patterns
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const os = require("os");
|
|
9
|
+
|
|
10
|
+
const VIBECHECK_HOME = path.join(os.homedir(), ".vibecheck");
|
|
11
|
+
const INSIGHTS_FILE = path.join(VIBECHECK_HOME, "insights.json");
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Initialize insights file
|
|
15
|
+
*/
|
|
16
|
+
function initializeInsights() {
|
|
17
|
+
if (!fs.existsSync(VIBECHECK_HOME)) {
|
|
18
|
+
fs.mkdirSync(VIBECHECK_HOME, { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!fs.existsSync(INSIGHTS_FILE)) {
|
|
22
|
+
fs.writeFileSync(INSIGHTS_FILE, JSON.stringify({
|
|
23
|
+
sessions: [],
|
|
24
|
+
queries: [],
|
|
25
|
+
fileEdits: [],
|
|
26
|
+
totalSessions: 0,
|
|
27
|
+
}, null, 2));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Track chat/context usage insights
|
|
33
|
+
*/
|
|
34
|
+
function trackInsight(projectPath, action, data = {}) {
|
|
35
|
+
initializeInsights();
|
|
36
|
+
|
|
37
|
+
let insights;
|
|
38
|
+
try {
|
|
39
|
+
insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
|
|
40
|
+
} catch {
|
|
41
|
+
insights = { sessions: [], queries: [], fileEdits: [], totalSessions: 0 };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const entry = {
|
|
45
|
+
timestamp: new Date().toISOString(),
|
|
46
|
+
project: path.basename(projectPath),
|
|
47
|
+
projectPath: projectPath,
|
|
48
|
+
action,
|
|
49
|
+
...data,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
switch (action) {
|
|
53
|
+
case "context_generated":
|
|
54
|
+
insights.sessions.push(entry);
|
|
55
|
+
insights.totalSessions++;
|
|
56
|
+
break;
|
|
57
|
+
case "file_edit":
|
|
58
|
+
insights.fileEdits.push(entry);
|
|
59
|
+
break;
|
|
60
|
+
case "query":
|
|
61
|
+
insights.queries.push(entry);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Keep last 500 entries per category
|
|
66
|
+
insights.sessions = insights.sessions.slice(-500);
|
|
67
|
+
insights.fileEdits = insights.fileEdits.slice(-500);
|
|
68
|
+
insights.queries = insights.queries.slice(-500);
|
|
69
|
+
|
|
70
|
+
fs.writeFileSync(INSIGHTS_FILE, JSON.stringify(insights, null, 2));
|
|
71
|
+
return insights;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get most active hours from sessions
|
|
76
|
+
*/
|
|
77
|
+
function getMostActiveHours(sessions) {
|
|
78
|
+
const hours = {};
|
|
79
|
+
for (const session of sessions) {
|
|
80
|
+
const hour = new Date(session.timestamp).getHours();
|
|
81
|
+
hours[hour] = (hours[hour] || 0) + 1;
|
|
82
|
+
}
|
|
83
|
+
return Object.entries(hours)
|
|
84
|
+
.sort((a, b) => b[1] - a[1])
|
|
85
|
+
.slice(0, 3)
|
|
86
|
+
.map(([hour]) => `${hour}:00`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Get insights summary for dashboard
|
|
91
|
+
*/
|
|
92
|
+
function getInsightsSummary() {
|
|
93
|
+
initializeInsights();
|
|
94
|
+
|
|
95
|
+
try {
|
|
96
|
+
const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
|
|
97
|
+
const now = new Date();
|
|
98
|
+
const dayAgo = new Date(now - 24 * 60 * 60 * 1000);
|
|
99
|
+
const weekAgo = new Date(now - 7 * 24 * 60 * 60 * 1000);
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
totalSessions: insights.totalSessions || 0,
|
|
103
|
+
sessionsToday: insights.sessions?.filter(s => new Date(s.timestamp) > dayAgo).length || 0,
|
|
104
|
+
sessionsThisWeek: insights.sessions?.filter(s => new Date(s.timestamp) > weekAgo).length || 0,
|
|
105
|
+
totalFileEdits: insights.fileEdits?.length || 0,
|
|
106
|
+
recentProjects: [...new Set(insights.sessions?.slice(-20).map(s => s.project))],
|
|
107
|
+
mostActiveHours: getMostActiveHours(insights.sessions || []),
|
|
108
|
+
};
|
|
109
|
+
} catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get recent sessions
|
|
116
|
+
*/
|
|
117
|
+
function getRecentSessions(limit = 10) {
|
|
118
|
+
initializeInsights();
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
|
|
122
|
+
return insights.sessions?.slice(-limit).reverse() || [];
|
|
123
|
+
} catch {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Get project activity
|
|
130
|
+
*/
|
|
131
|
+
function getProjectActivity(projectPath) {
|
|
132
|
+
initializeInsights();
|
|
133
|
+
|
|
134
|
+
try {
|
|
135
|
+
const insights = JSON.parse(fs.readFileSync(INSIGHTS_FILE, "utf-8"));
|
|
136
|
+
const projectName = path.basename(projectPath);
|
|
137
|
+
|
|
138
|
+
const sessions = insights.sessions?.filter(s => s.project === projectName) || [];
|
|
139
|
+
const fileEdits = insights.fileEdits?.filter(f => f.project === projectName) || [];
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
totalSessions: sessions.length,
|
|
143
|
+
lastSession: sessions[sessions.length - 1]?.timestamp || null,
|
|
144
|
+
totalFileEdits: fileEdits.length,
|
|
145
|
+
};
|
|
146
|
+
} catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Clear all insights
|
|
153
|
+
*/
|
|
154
|
+
function clearInsights() {
|
|
155
|
+
const insights = {
|
|
156
|
+
sessions: [],
|
|
157
|
+
queries: [],
|
|
158
|
+
fileEdits: [],
|
|
159
|
+
totalSessions: 0,
|
|
160
|
+
};
|
|
161
|
+
fs.writeFileSync(INSIGHTS_FILE, JSON.stringify(insights, null, 2));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.exports = {
|
|
165
|
+
INSIGHTS_FILE,
|
|
166
|
+
initializeInsights,
|
|
167
|
+
trackInsight,
|
|
168
|
+
getInsightsSummary,
|
|
169
|
+
getRecentSessions,
|
|
170
|
+
getProjectActivity,
|
|
171
|
+
getMostActiveHours,
|
|
172
|
+
clearInsights,
|
|
173
|
+
};
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate thin rules files that point to MCP tools
|
|
3
|
+
* These are the "policy layer" - short files that tell agents what tools to call
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Generate Cursor MCP config
|
|
11
|
+
*/
|
|
12
|
+
function generateCursorMCPConfig(projectPath) {
|
|
13
|
+
return {
|
|
14
|
+
mcpServers: {
|
|
15
|
+
"vibecheck-context": {
|
|
16
|
+
command: "node",
|
|
17
|
+
args: [path.join(projectPath, ".vibecheck", "mcp-server", "index.js"), "serve"],
|
|
18
|
+
env: {}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Generate thin Cursor rules that point to MCP tools
|
|
26
|
+
*/
|
|
27
|
+
function generateCursorMCPRules(projectPath, analysis) {
|
|
28
|
+
const projectName = path.basename(projectPath);
|
|
29
|
+
|
|
30
|
+
return `---
|
|
31
|
+
description: Context Engine Integration - USE THESE TOOLS BEFORE MAKING CHANGES
|
|
32
|
+
globs: ["**/*"]
|
|
33
|
+
alwaysApply: true
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# 🔧 Context Engine Tools (MCP)
|
|
37
|
+
|
|
38
|
+
> This project has a Context Engine. ALWAYS use these tools before making changes.
|
|
39
|
+
|
|
40
|
+
## MANDATORY WORKFLOW
|
|
41
|
+
|
|
42
|
+
### Before Planning ANY Change:
|
|
43
|
+
\`\`\`
|
|
44
|
+
1. Call repo_map() → understand architecture
|
|
45
|
+
2. Call risk_blast_radius(files) → assess impact
|
|
46
|
+
\`\`\`
|
|
47
|
+
|
|
48
|
+
### Before Using ANY Symbol:
|
|
49
|
+
\`\`\`
|
|
50
|
+
Call symbols_exists(name) → verify it exists
|
|
51
|
+
If returns { exists: false } → DO NOT USE IT
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
### Before Using ANY Package:
|
|
55
|
+
\`\`\`
|
|
56
|
+
Call versions_allowed(package) → verify installed
|
|
57
|
+
If returns { allowed: false } → DO NOT SUGGEST IT
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
### Before Claiming ANY Route Exists:
|
|
61
|
+
\`\`\`
|
|
62
|
+
Call routes_exists(method, path) → verify it exists
|
|
63
|
+
If returns { exists: false } → DO NOT INVENT IT
|
|
64
|
+
\`\`\`
|
|
65
|
+
|
|
66
|
+
### When Creating New Code:
|
|
67
|
+
\`\`\`
|
|
68
|
+
Call patterns_get(type) → get verified pattern
|
|
69
|
+
Available: api-route, component, hook
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
### Before Touching Auth:
|
|
73
|
+
\`\`\`
|
|
74
|
+
Call security_auth_flow() → understand auth system
|
|
75
|
+
Follow existing patterns exactly
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
### After Making Changes:
|
|
79
|
+
\`\`\`
|
|
80
|
+
Call tests_required(files) → know what to test
|
|
81
|
+
Call verify_changes(changes) → final check
|
|
82
|
+
\`\`\`
|
|
83
|
+
|
|
84
|
+
## Project Identity
|
|
85
|
+
|
|
86
|
+
- **Name**: ${projectName}
|
|
87
|
+
- **Framework**: ${analysis?.framework || "Unknown"}
|
|
88
|
+
- **Language**: ${analysis?.language || "Unknown"}
|
|
89
|
+
|
|
90
|
+
## HARD RULES
|
|
91
|
+
|
|
92
|
+
1. ❌ **NEVER** invent symbols without calling \`symbols_exists\`
|
|
93
|
+
2. ❌ **NEVER** suggest packages without calling \`versions_allowed\`
|
|
94
|
+
3. ❌ **NEVER** claim routes exist without calling \`routes_exists\`
|
|
95
|
+
4. ❌ **NEVER** touch auth without calling \`security_auth_flow\`
|
|
96
|
+
5. ✅ **ALWAYS** call \`repo_map\` before planning changes
|
|
97
|
+
6. ✅ **ALWAYS** call \`patterns_get\` when creating new code
|
|
98
|
+
|
|
99
|
+
## If Tools Return "Not Found"
|
|
100
|
+
|
|
101
|
+
When a tool says something doesn't exist:
|
|
102
|
+
- Do NOT proceed as if it does
|
|
103
|
+
- Do NOT invent alternatives
|
|
104
|
+
- ASK the user for clarification or guidance
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
*Powered by vibecheck Context Engine*
|
|
108
|
+
`;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Generate thin Windsurf rules
|
|
113
|
+
*/
|
|
114
|
+
function generateWindsurfMCPRules(projectPath, analysis) {
|
|
115
|
+
const projectName = path.basename(projectPath);
|
|
116
|
+
|
|
117
|
+
return `---
|
|
118
|
+
trigger: always
|
|
119
|
+
description: Context Engine Integration for ${projectName}
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
# Context Engine Integration
|
|
123
|
+
|
|
124
|
+
This project uses the vibecheck Context Engine. Query it before making changes.
|
|
125
|
+
|
|
126
|
+
## Project Info
|
|
127
|
+
- Framework: ${analysis?.framework || "Unknown"}
|
|
128
|
+
- Language: ${analysis?.language || "Unknown"}
|
|
129
|
+
- State: ${analysis?.antiHallucination?.stateManagement || "N/A"}
|
|
130
|
+
|
|
131
|
+
## Available Tools (via MCP)
|
|
132
|
+
|
|
133
|
+
| Tool | Use When |
|
|
134
|
+
|------|----------|
|
|
135
|
+
| \`repo_map()\` | Starting any task |
|
|
136
|
+
| \`symbols_exists(name)\` | Before using any function/component |
|
|
137
|
+
| \`versions_allowed(pkg)\` | Before suggesting packages |
|
|
138
|
+
| \`routes_exists(method, path)\` | Before claiming API exists |
|
|
139
|
+
| \`patterns_get(type)\` | When creating new code |
|
|
140
|
+
| \`security_auth_flow()\` | Before touching auth |
|
|
141
|
+
| \`tests_required(files)\` | After making changes |
|
|
142
|
+
| \`risk_blast_radius(files)\` | Before risky changes |
|
|
143
|
+
|
|
144
|
+
## Mandatory Checks
|
|
145
|
+
|
|
146
|
+
1. **Before planning**: Call \`repo_map()\`
|
|
147
|
+
2. **Before using symbols**: Call \`symbols_exists()\`
|
|
148
|
+
3. **Before packages**: Call \`versions_allowed()\`
|
|
149
|
+
4. **Before auth changes**: Call \`security_auth_flow()\`
|
|
150
|
+
|
|
151
|
+
## If Tool Says "Not Found"
|
|
152
|
+
|
|
153
|
+
- Do NOT proceed as if it exists
|
|
154
|
+
- Do NOT invent alternatives
|
|
155
|
+
- ASK user for guidance
|
|
156
|
+
`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Generate thin Copilot instructions
|
|
161
|
+
*/
|
|
162
|
+
function generateCopilotMCPInstructions(projectPath, analysis) {
|
|
163
|
+
const projectName = path.basename(projectPath);
|
|
164
|
+
|
|
165
|
+
return `# ${projectName} - AI Context Instructions
|
|
166
|
+
|
|
167
|
+
## Project Stack
|
|
168
|
+
- Framework: ${analysis?.framework || "Unknown"}
|
|
169
|
+
- Language: ${analysis?.language || "Unknown"}
|
|
170
|
+
- ORM: ${analysis?.antiHallucination?.ormType || "N/A"}
|
|
171
|
+
- UI: ${analysis?.antiHallucination?.uiLibrary?.name || "N/A"}
|
|
172
|
+
- State: ${analysis?.antiHallucination?.stateManagement || "N/A"}
|
|
173
|
+
|
|
174
|
+
## Context Engine Available
|
|
175
|
+
|
|
176
|
+
This project has a Context Engine with verified facts. Query the \`.vibecheck/truth-pack.json\` for:
|
|
177
|
+
|
|
178
|
+
- **Symbols**: All exported functions, components, hooks
|
|
179
|
+
- **Routes**: All API endpoints with file:line proof
|
|
180
|
+
- **Versions**: All installed packages with exact versions
|
|
181
|
+
- **Patterns**: Verified code patterns to follow
|
|
182
|
+
- **Security**: Auth files, middleware, protected routes
|
|
183
|
+
|
|
184
|
+
## Mandatory Rules
|
|
185
|
+
|
|
186
|
+
### DO NOT:
|
|
187
|
+
- Invent functions that aren't in the symbol index
|
|
188
|
+
- Suggest packages not in package.json
|
|
189
|
+
- Claim routes exist without proof
|
|
190
|
+
- Bypass auth patterns
|
|
191
|
+
|
|
192
|
+
### ALWAYS:
|
|
193
|
+
- Check truth-pack.json before claiming something exists
|
|
194
|
+
- Follow existing patterns from the codebase
|
|
195
|
+
- Verify package versions before suggesting APIs
|
|
196
|
+
- Reference file:line when citing code
|
|
197
|
+
|
|
198
|
+
## Verification
|
|
199
|
+
|
|
200
|
+
Before suggesting code:
|
|
201
|
+
1. Verify symbols exist in truth-pack.json
|
|
202
|
+
2. Verify packages are installed
|
|
203
|
+
3. Check patterns for correct style
|
|
204
|
+
4. Assess blast radius for risky files
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
*Generated by vibecheck Context Engine*
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Generate Claude project context with MCP config
|
|
213
|
+
*/
|
|
214
|
+
function generateClaudeMCPContext(projectPath, analysis) {
|
|
215
|
+
const projectName = path.basename(projectPath);
|
|
216
|
+
|
|
217
|
+
return `# ${projectName} - Project Context
|
|
218
|
+
|
|
219
|
+
## Stack
|
|
220
|
+
- **Framework**: ${analysis?.framework || "Unknown"}
|
|
221
|
+
- **Language**: ${analysis?.language || "Unknown"}
|
|
222
|
+
- **Database**: ${analysis?.antiHallucination?.ormType || "N/A"}
|
|
223
|
+
- **UI Library**: ${analysis?.antiHallucination?.uiLibrary?.name || "N/A"}
|
|
224
|
+
- **State Management**: ${analysis?.antiHallucination?.stateManagement || "N/A"}
|
|
225
|
+
|
|
226
|
+
## Context Engine
|
|
227
|
+
|
|
228
|
+
This project has a vibecheck Context Engine at \`.vibecheck/\`.
|
|
229
|
+
|
|
230
|
+
### Truth Pack Location
|
|
231
|
+
\`\`\`
|
|
232
|
+
.vibecheck/truth-pack.json
|
|
233
|
+
\`\`\`
|
|
234
|
+
|
|
235
|
+
Contains verified:
|
|
236
|
+
- Symbol index (what exists)
|
|
237
|
+
- Route map (API endpoints)
|
|
238
|
+
- Version truth (installed packages)
|
|
239
|
+
- Security map (auth flow)
|
|
240
|
+
- Golden patterns (verified code)
|
|
241
|
+
- Risk map (critical files)
|
|
242
|
+
|
|
243
|
+
## MCP Tools
|
|
244
|
+
|
|
245
|
+
If MCP is configured, use these tools:
|
|
246
|
+
|
|
247
|
+
| Tool | Purpose |
|
|
248
|
+
|------|---------|
|
|
249
|
+
| repo_map | Get architecture overview |
|
|
250
|
+
| symbols_exists | Verify symbol exists |
|
|
251
|
+
| versions_allowed | Verify package installed |
|
|
252
|
+
| routes_exists | Verify route exists |
|
|
253
|
+
| patterns_get | Get verified pattern |
|
|
254
|
+
| security_auth_flow | Get auth info |
|
|
255
|
+
| tests_required | Get test requirements |
|
|
256
|
+
| risk_blast_radius | Assess change risk |
|
|
257
|
+
|
|
258
|
+
## Rules
|
|
259
|
+
|
|
260
|
+
1. **Verify before using** - Check truth-pack before claiming things exist
|
|
261
|
+
2. **Follow patterns** - Use golden patterns for new code
|
|
262
|
+
3. **Respect versions** - Only use installed package APIs
|
|
263
|
+
4. **Check risk** - Assess blast radius for critical files
|
|
264
|
+
`;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Copy MCP server to project
|
|
269
|
+
*/
|
|
270
|
+
function copyMCPServerToProject(projectPath) {
|
|
271
|
+
const vibecheckDir = path.join(projectPath, ".vibecheck", "mcp-server");
|
|
272
|
+
|
|
273
|
+
if (!fs.existsSync(vibecheckDir)) {
|
|
274
|
+
fs.mkdirSync(vibecheckDir, { recursive: true });
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Copy the MCP server
|
|
278
|
+
const serverSource = path.join(__dirname, "index.js");
|
|
279
|
+
const serverDest = path.join(vibecheckDir, "index.js");
|
|
280
|
+
|
|
281
|
+
if (fs.existsSync(serverSource)) {
|
|
282
|
+
fs.copyFileSync(serverSource, serverDest);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Create package.json
|
|
286
|
+
const pkgContent = {
|
|
287
|
+
name: "vibecheck-context-engine",
|
|
288
|
+
version: "1.0.0",
|
|
289
|
+
main: "index.js",
|
|
290
|
+
scripts: {
|
|
291
|
+
"index": "node index.js index --path=../..",
|
|
292
|
+
"serve": "node index.js serve --http --path=../..",
|
|
293
|
+
"serve:mcp": "node index.js serve --path=../.."
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
fs.writeFileSync(
|
|
298
|
+
path.join(vibecheckDir, "package.json"),
|
|
299
|
+
JSON.stringify(pkgContent, null, 2)
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
return vibecheckDir;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Generate all MCP-related files
|
|
307
|
+
*/
|
|
308
|
+
function generateMCPFiles(projectPath, analysis) {
|
|
309
|
+
const files = {};
|
|
310
|
+
|
|
311
|
+
// Cursor MCP config
|
|
312
|
+
files[".cursor/mcp.json"] = JSON.stringify(generateCursorMCPConfig(projectPath), null, 2);
|
|
313
|
+
|
|
314
|
+
// Cursor thin rules
|
|
315
|
+
files[".cursor/rules/context-engine.mdc"] = generateCursorMCPRules(projectPath, analysis);
|
|
316
|
+
|
|
317
|
+
// Windsurf thin rules
|
|
318
|
+
files[".windsurf/rules/context-engine.md"] = generateWindsurfMCPRules(projectPath, analysis);
|
|
319
|
+
|
|
320
|
+
// Copilot instructions
|
|
321
|
+
files[".github/copilot-context.md"] = generateCopilotMCPInstructions(projectPath, analysis);
|
|
322
|
+
|
|
323
|
+
// Claude context
|
|
324
|
+
files[".claude/project-context.md"] = generateClaudeMCPContext(projectPath, analysis);
|
|
325
|
+
|
|
326
|
+
return files;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
module.exports = {
|
|
330
|
+
generateCursorMCPConfig,
|
|
331
|
+
generateCursorMCPRules,
|
|
332
|
+
generateWindsurfMCPRules,
|
|
333
|
+
generateCopilotMCPInstructions,
|
|
334
|
+
generateClaudeMCPContext,
|
|
335
|
+
copyMCPServerToProject,
|
|
336
|
+
generateMCPFiles,
|
|
337
|
+
};
|