@vibecheckai/cli 3.0.4 → 3.0.7

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.
Files changed (108) hide show
  1. package/bin/dev/run-v2-torture.js +30 -0
  2. package/bin/runners/context/index.js +1 -1
  3. package/bin/runners/lib/analyzers.js +38 -0
  4. package/bin/runners/lib/assets/vibecheck-logo.png +0 -0
  5. package/bin/runners/lib/contracts/auth-contract.js +8 -0
  6. package/bin/runners/lib/contracts/env-contract.js +3 -0
  7. package/bin/runners/lib/contracts/external-contract.js +10 -2
  8. package/bin/runners/lib/contracts/route-contract.js +7 -0
  9. package/bin/runners/lib/contracts.js +804 -0
  10. package/bin/runners/lib/detectors-v2.js +703 -0
  11. package/bin/runners/lib/drift.js +425 -0
  12. package/bin/runners/lib/entitlements-v2.js +3 -1
  13. package/bin/runners/lib/entitlements.js +11 -3
  14. package/bin/runners/lib/env-resolver.js +417 -0
  15. package/bin/runners/lib/extractors/client-calls.js +990 -0
  16. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -0
  17. package/bin/runners/lib/extractors/fastify-routes.js +426 -0
  18. package/bin/runners/lib/extractors/index.js +363 -0
  19. package/bin/runners/lib/extractors/next-routes.js +524 -0
  20. package/bin/runners/lib/extractors/proof-graph.js +431 -0
  21. package/bin/runners/lib/extractors/route-matcher.js +451 -0
  22. package/bin/runners/lib/extractors/truthpack-v2.js +377 -0
  23. package/bin/runners/lib/extractors/ui-bindings.js +547 -0
  24. package/bin/runners/lib/findings-schema.js +281 -0
  25. package/bin/runners/lib/html-report.js +650 -0
  26. package/bin/runners/lib/missions/templates.js +45 -0
  27. package/bin/runners/lib/policy.js +295 -0
  28. package/bin/runners/lib/reality/correlation-detectors.js +359 -0
  29. package/bin/runners/lib/reality/index.js +318 -0
  30. package/bin/runners/lib/reality/request-hashing.js +416 -0
  31. package/bin/runners/lib/reality/request-mapper.js +453 -0
  32. package/bin/runners/lib/reality/safety-rails.js +463 -0
  33. package/bin/runners/lib/reality/semantic-snapshot.js +408 -0
  34. package/bin/runners/lib/reality/toast-detector.js +393 -0
  35. package/bin/runners/lib/report-html.js +5 -0
  36. package/bin/runners/lib/report-templates.js +5 -0
  37. package/bin/runners/lib/report.js +135 -0
  38. package/bin/runners/lib/route-truth.js +10 -10
  39. package/bin/runners/lib/schema-validator.js +350 -0
  40. package/bin/runners/lib/schemas/contracts.schema.json +160 -0
  41. package/bin/runners/lib/schemas/finding.schema.json +100 -0
  42. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -0
  43. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -0
  44. package/bin/runners/lib/schemas/reality-report.schema.json +162 -0
  45. package/bin/runners/lib/schemas/share-pack.schema.json +180 -0
  46. package/bin/runners/lib/schemas/ship-report.schema.json +117 -0
  47. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -0
  48. package/bin/runners/lib/schemas/validator.js +438 -0
  49. package/bin/runners/lib/ui.js +562 -0
  50. package/bin/runners/lib/verdict-engine.js +628 -0
  51. package/bin/runners/runAIAgent.js +228 -1
  52. package/bin/runners/runBadge.js +181 -1
  53. package/bin/runners/runCtx.js +7 -2
  54. package/bin/runners/runCtxDiff.js +301 -0
  55. package/bin/runners/runGuard.js +168 -0
  56. package/bin/runners/runInitGha.js +78 -15
  57. package/bin/runners/runLabs.js +341 -0
  58. package/bin/runners/runLaunch.js +180 -1
  59. package/bin/runners/runMdc.js +203 -1
  60. package/bin/runners/runProof.zip +0 -0
  61. package/bin/runners/runProve.js +23 -0
  62. package/bin/runners/runReplay.js +114 -84
  63. package/bin/runners/runScan.js +111 -32
  64. package/bin/runners/runShip.js +23 -2
  65. package/bin/runners/runTruthpack.js +9 -7
  66. package/bin/runners/runValidate.js +161 -1
  67. package/bin/vibecheck.js +416 -770
  68. package/mcp-server/.guardrail/audit/audit.log.jsonl +2 -0
  69. package/mcp-server/.specs/architecture.mdc +90 -0
  70. package/mcp-server/.specs/security.mdc +30 -0
  71. package/mcp-server/README.md +252 -0
  72. package/mcp-server/agent-checkpoint.js +364 -0
  73. package/mcp-server/architect-tools.js +707 -0
  74. package/mcp-server/audit-mcp.js +206 -0
  75. package/mcp-server/codebase-architect-tools.js +838 -0
  76. package/mcp-server/consolidated-tools.js +804 -0
  77. package/mcp-server/hygiene-tools.js +428 -0
  78. package/mcp-server/index-v1.js +698 -0
  79. package/mcp-server/index.js +2092 -0
  80. package/mcp-server/index.old.js +4137 -0
  81. package/mcp-server/intelligence-tools.js +664 -0
  82. package/mcp-server/intent-drift-tools.js +873 -0
  83. package/mcp-server/mdc-generator.js +298 -0
  84. package/mcp-server/package-lock.json +165 -0
  85. package/mcp-server/package.json +47 -0
  86. package/mcp-server/premium-tools.js +1275 -0
  87. package/mcp-server/test-mcp.js +108 -0
  88. package/mcp-server/test-tools.js +36 -0
  89. package/mcp-server/tier-auth.js +147 -0
  90. package/mcp-server/tools/index.js +72 -0
  91. package/mcp-server/tools-reorganized.ts +244 -0
  92. package/mcp-server/truth-context.js +581 -0
  93. package/mcp-server/truth-firewall-tools.js +1500 -0
  94. package/mcp-server/vibecheck-2.0-tools.js +748 -0
  95. package/mcp-server/vibecheck-tools.js +1075 -0
  96. package/package.json +10 -8
  97. package/bin/guardrail.js +0 -834
  98. package/bin/runners/runAudit.js +0 -2
  99. package/bin/runners/runAutopilot.js +0 -2
  100. package/bin/runners/runCertify.js +0 -2
  101. package/bin/runners/runDashboard.js +0 -10
  102. package/bin/runners/runEnhancedShip.js +0 -2
  103. package/bin/runners/runFixPacks.js +0 -2
  104. package/bin/runners/runNaturalLanguage.js +0 -3
  105. package/bin/runners/runProof.js +0 -2
  106. package/bin/runners/runRealitySniff.js +0 -2
  107. package/bin/runners/runUpgrade.js +0 -2
  108. package/bin/runners/runVerifyAgentOutput.js +0 -2
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Run Spec v2 Torture Suite
4
+ *
5
+ * Quick confidence builder for spec v2 implementation.
6
+ *
7
+ * Usage:
8
+ * node bin/dev/run-v2-torture.js
9
+ * pnpm test:v2
10
+ */
11
+
12
+ "use strict";
13
+
14
+ const path = require("path");
15
+
16
+ // Run the torture suite
17
+ const { TortureTestRunner } = require("../../tests/e2e/spec-v2.torture.test.js");
18
+
19
+ async function main() {
20
+ const runner = new TortureTestRunner();
21
+ const results = await runner.run();
22
+
23
+ // Exit with appropriate code
24
+ process.exit(results.failed > 0 ? 1 : 0);
25
+ }
26
+
27
+ main().catch(err => {
28
+ console.error("❌ Torture suite crashed:", err);
29
+ process.exit(1);
30
+ });
@@ -20,7 +20,7 @@ const { generatePrunedContext, getContextForFile, pruneContext } = require("./co
20
20
  const { generateDependencyGraph, buildDependencyGraph, generateMermaidDiagram, generateHtmlVisualization } = require("./dependency-graph");
21
21
  const { generateGitContext, getGitContext } = require("./git-context");
22
22
  const { extractAPIContracts, generateAPIContext } = require("./api-contracts");
23
- const { analyzeTeamConventions } = require("./team-conventions");
23
+ const { analyzeTeamConventions, generateTeamReport } = require("./team-conventions");
24
24
  const { buildSearchIndex, saveSearchIndex, loadSearchIndex, semanticSearch, generateSearchReport } = require("./semantic-search");
25
25
  const { scanProject, generateSecurityReport } = require("./security-scanner");
26
26
  const { decomposeTask, generateDecompositionReport } = require("./ai-task-decomposer");
@@ -131,9 +131,47 @@ function findEnvGaps(truthpack) {
131
131
  const declared = new Set(truthpack?.env?.declared || []);
132
132
  const declaredSources = truthpack?.env?.declaredSources || [];
133
133
 
134
+ // Well-known system/CI env vars that shouldn't be flagged as undeclared
135
+ const systemEnvVars = new Set([
136
+ // System
137
+ 'HOME', 'USER', 'PATH', 'PWD', 'SHELL', 'TERM', 'LANG', 'TZ', 'TMPDIR', 'TEMP', 'TMP',
138
+ 'COLORTERM', 'FORCE_COLOR', 'NO_COLOR', 'TERM_PROGRAM', 'TERM_PROGRAM_VERSION',
139
+ // Windows
140
+ 'APPDATA', 'LOCALAPPDATA', 'USERPROFILE', 'COMPUTERNAME', 'USERNAME', 'HOMEDRIVE', 'HOMEPATH',
141
+ 'SYSTEMROOT', 'WINDIR', 'PROGRAMFILES', 'PROGRAMDATA', 'COMMONPROGRAMFILES',
142
+ // Node.js
143
+ 'NODE_ENV', 'NODE_OPTIONS', 'NODE_PATH', 'NODE_DEBUG', 'NODE_NO_WARNINGS',
144
+ // CI/CD platforms
145
+ 'CI', 'CONTINUOUS_INTEGRATION', 'BUILD_NUMBER', 'BUILD_ID',
146
+ 'GITHUB_ACTIONS', 'GITHUB_WORKFLOW', 'GITHUB_RUN_ID', 'GITHUB_RUN_NUMBER', 'GITHUB_SHA', 'GITHUB_REF',
147
+ 'GITLAB_CI', 'CI_COMMIT_SHA', 'CI_PIPELINE_ID', 'CI_JOB_ID',
148
+ 'CIRCLECI', 'CIRCLE_BUILD_NUM', 'CIRCLE_SHA1', 'CIRCLE_BRANCH',
149
+ 'TRAVIS', 'TRAVIS_BUILD_NUMBER', 'TRAVIS_COMMIT',
150
+ 'JENKINS_URL', 'BUILD_TAG', 'GIT_COMMIT',
151
+ 'BUILDKITE', 'BUILDKITE_BUILD_NUMBER', 'BUILDKITE_COMMIT',
152
+ 'CODEBUILD_BUILD_ID', 'CODEBUILD_RESOLVED_SOURCE_VERSION',
153
+ 'VERCEL', 'VERCEL_ENV', 'VERCEL_URL', 'VERCEL_GIT_COMMIT_SHA',
154
+ 'NETLIFY', 'CONTEXT', 'DEPLOY_PRIME_URL',
155
+ 'RAILWAY_ENVIRONMENT', 'RAILWAY_GIT_COMMIT_SHA',
156
+ 'HEROKU', 'DYNO', 'RENDER', 'FLY_APP_NAME',
157
+ // CI user info
158
+ 'GITHUB_ACTOR', 'GITLAB_USER_LOGIN', 'GITLAB_USER_NAME', 'GITLAB_USER_EMAIL',
159
+ // Network/proxy
160
+ 'HTTP_PROXY', 'HTTPS_PROXY', 'NO_PROXY', 'http_proxy', 'https_proxy', 'no_proxy',
161
+ 'HOSTNAME', 'HOST',
162
+ // Debug/logging
163
+ 'DEBUG', 'VERBOSE', 'LOG_LEVEL',
164
+ // Editor/IDE
165
+ 'EDITOR', 'VISUAL', 'VSCODE_PID', 'TERM_SESSION_ID',
166
+ // Common optional vars that are often checked but not required
167
+ 'PORT', 'npm_package_version', 'npm_package_name',
168
+ ]);
169
+
134
170
  // 1) USED but not declared in templates/examples => WARN (or BLOCK if required)
135
171
  for (const v of used) {
136
172
  if (declared.has(v.name)) continue;
173
+ // Skip well-known system/CI env vars
174
+ if (systemEnvVars.has(v.name)) continue;
137
175
 
138
176
  const sev = v.required ? "BLOCK" : "WARN";
139
177
  findings.push({
@@ -58,6 +58,14 @@ function buildAuthContract(truthpack) {
58
58
  "/favicon.ico"
59
59
  ];
60
60
 
61
+ // Deterministic output: sort all arrays
62
+ contract.protectedPatterns.sort();
63
+ contract.publicPatterns.sort();
64
+ contract.roles.sort((a, b) => a.name.localeCompare(b.name));
65
+ for (const role of contract.roles) {
66
+ if (role.routes) role.routes.sort();
67
+ }
68
+
61
69
  return contract;
62
70
  }
63
71
 
@@ -46,6 +46,9 @@ function buildEnvContract(truthpack) {
46
46
  }
47
47
  }
48
48
 
49
+ // Deterministic output: sort vars by name
50
+ contract.vars.sort((a, b) => a.name.localeCompare(b.name));
51
+
49
52
  return contract;
50
53
  }
51
54
 
@@ -84,12 +84,20 @@ function buildExternalContract(truthpack) {
84
84
  if (supabaseVars.length) {
85
85
  contract.services.push({
86
86
  name: "supabase",
87
- envVars: supabaseVars.map(v => v.name),
88
- usedIn: supabaseVars.flatMap(v => v.references?.map(r => r.file) || []),
87
+ envVars: supabaseVars.map(v => v.name).sort(),
88
+ usedIn: [...new Set(supabaseVars.flatMap(v => v.references?.map(r => r.file) || []))].sort(),
89
89
  evidence: supabaseVars.flatMap(v => v.references || [])
90
90
  });
91
91
  }
92
92
 
93
+ // Deterministic output: sort services by name, and their internal arrays
94
+ contract.services.sort((a, b) => a.name.localeCompare(b.name));
95
+ for (const svc of contract.services) {
96
+ if (svc.envVars) svc.envVars.sort();
97
+ if (svc.usedIn) svc.usedIn = [...new Set(svc.usedIn)].sort();
98
+ if (svc.webhooks) svc.webhooks.sort((a, b) => a.path.localeCompare(b.path));
99
+ }
100
+
93
101
  return contract;
94
102
  }
95
103
 
@@ -38,6 +38,13 @@ function buildRouteContract(truthpack) {
38
38
  contract.routes.push(routeSpec);
39
39
  }
40
40
 
41
+ // Deterministic output: sort routes by method + path
42
+ contract.routes.sort((a, b) => {
43
+ const keyA = `${a.method}_${a.path}`;
44
+ const keyB = `${b.method}_${b.path}`;
45
+ return keyA.localeCompare(keyB);
46
+ });
47
+
41
48
  return contract;
42
49
  }
43
50