@vibecheck-ai/mcp 25.0.0 → 26.0.1

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.
@@ -27,11 +27,11 @@ dirname(__filename$1);
27
27
  // ../engines/dist/index.js
28
28
  var import_typescript = __toESM(require_typescript(), 1);
29
29
 
30
- // ../subscriptions/dist/chunk-XDJH35I6.js
31
- var PLAN_IDS = ["pro", "team", "enterprise"];
30
+ // ../subscriptions/dist/chunk-TEQPNVO7.js
31
+ var PLAN_IDS = ["vibecoder", "engineer", "enterprise"];
32
32
  var PLAN_RANK = {
33
- pro: 0,
34
- team: 1,
33
+ vibecoder: 0,
34
+ engineer: 1,
35
35
  enterprise: 2
36
36
  };
37
37
  var PLAN_ID_SET = new Set(PLAN_IDS);
@@ -39,20 +39,19 @@ function isCanonicalPlanId(value) {
39
39
  return typeof value === "string" && PLAN_ID_SET.has(value);
40
40
  }
41
41
  var PLAN_NORMALIZATION_ALIASES = {
42
- vibecoder: "pro",
43
- developer: "team",
44
- engineer: "enterprise",
45
- vibe_coder: "pro",
46
- "vibe-coder": "pro",
47
- "vibe coder": "pro",
48
- trialing: "pro",
49
- active: "pro",
50
- paid: "pro",
51
- premium: "pro",
52
- starter: "pro",
42
+ // v40 canonical slugs (round-trip safe)
43
+ vibecoder: "vibecoder",
44
+ engineer: "engineer",
45
+ // Pre-v40 slugs → v40 equivalents
46
+ pro: "vibecoder",
47
+ team: "engineer",
48
+ developer: "vibecoder",
49
+ vibe_coder: "vibecoder",
50
+ "vibe-coder": "vibecoder",
51
+ "vibe coder": "vibecoder",
53
52
  compliance: "enterprise",
54
- business: "team",
55
- team_workspace: "team",
53
+ business: "engineer",
54
+ team_workspace: "engineer",
56
55
  enterprise_annual: "enterprise",
57
56
  enterprise_monthly: "enterprise",
58
57
  elite: "enterprise"
@@ -99,74 +98,64 @@ if (typeof process !== "undefined") {
99
98
  }
100
99
  }
101
100
  var PLAN_DEFINITIONS = {
102
- pro: {
103
- displayName: "Vibe-Coder",
104
- tagline: "$9.99/mo \u2014 fix what you find.",
105
- monthlyPriceUsd: 9.99,
106
- priceLabel: "$9.99/mo",
101
+ vibecoder: {
102
+ displayName: "Vibecoder",
103
+ tagline: "Extension + CLI access. The fast lane.",
104
+ monthlyPriceUsd: 19.99,
105
+ priceLabel: "$19.99/mo",
107
106
  billingInterval: "month",
108
- badgeToken: "tier-pro",
107
+ badgeToken: "tier-vibecoder",
109
108
  highlights: [
110
- "Everything you need to ship with AI:",
111
- "All findings detailed (no blur)",
112
- "50 auto-fixes/mo \xB7 $0.50/fix overage",
113
- "AI Context Export \u2014 one-click to Claude / Cursor / MCP",
114
- "Ghost Mode \u2014 3 firewall rules armed + Enforce",
115
- "Reality Mode + Verified Badge for repos",
116
- "GitHub Action + CI block + SARIF export",
117
- "90-day history \xB7 10 projects",
118
- "7-day free trial"
109
+ "VS Code extension + CLI access",
110
+ "All scans, findings, and proof details",
111
+ "Auto-fix, Reality Mode, and CommitShield",
112
+ "Context Engine, ISL Studio, and firewall enforcement",
113
+ "Reports, truthpacks, badges, and cloud sync",
114
+ "GitHub Action checks for individual workflows"
119
115
  ],
120
- bestFor: "Indie devs shipping with AI",
121
- popular: true,
122
- cta: "Start 7-day trial",
116
+ bestFor: "Developers who want the full VibeCheck toolkit",
117
+ popular: false,
118
+ cta: "Start Vibecoder",
123
119
  ctaVariant: "default",
124
120
  supportLevel: "standard"
125
121
  },
126
- team: {
127
- displayName: "Developer",
128
- tagline: "$29.99/mo \u2014 prevent the next bug.",
129
- monthlyPriceUsd: 29.99,
130
- priceLabel: "$29.99/mo",
122
+ engineer: {
123
+ displayName: "Engineer",
124
+ tagline: "Everything in Vibecoder, plus the engineering dashboard.",
125
+ monthlyPriceUsd: 59.99,
126
+ priceLabel: "$59.99/mo",
131
127
  billingInterval: "month",
132
- badgeToken: "tier-team",
128
+ badgeToken: "tier-engineer",
133
129
  highlights: [
134
- "Everything in Vibe-Coder, plus:",
135
- "200 auto-fixes/mo + Self-Healing PRs",
136
- "Live AI context sync (no manual export)",
137
- "Ghost Mode \u2014 unlimited firewall rules + Drift Watcher",
138
- "Full Context Engine + ISL Studio + Chaos Agent",
139
- "Team dashboard \xB7 3 seats included \xB7 $9/extra seat",
140
- "API access (1k req/day) \xB7 CSV export",
141
- "Cloud sync \xB7 50 projects"
130
+ "Everything in Vibecoder, plus:",
131
+ "Engineering dashboard (scans, missions, billing, settings)",
132
+ "GitHub CI/CD ShipGate runs with SHIP / NO SHIP history",
133
+ "Org-wide analytics from CLI, MCP, VS Code, and extension activity"
142
134
  ],
143
- bestFor: "Small teams with shared AI workflows",
135
+ bestFor: "Engineers who need the full dashboard and analytics",
144
136
  popular: false,
145
- cta: "Start Vibe-Team",
137
+ cta: "Start Engineer",
146
138
  ctaVariant: "default",
147
139
  supportLevel: "priority"
148
140
  },
149
141
  enterprise: {
150
- displayName: "Engineer",
151
- tagline: "$59.99/mo \u2014 lock it down.",
152
- monthlyPriceUsd: 59.99,
153
- priceLabel: "$59.99/mo",
142
+ displayName: "Enterprise",
143
+ tagline: "Custom seats, SSO, audit. Talk to us.",
144
+ monthlyPriceUsd: 0,
145
+ priceLabel: "Contact sales",
154
146
  billingInterval: "month",
155
147
  badgeToken: "tier-enterprise",
156
148
  highlights: [
157
- "Everything in Vibe-Team, plus:",
158
- "Ghost Mode \u2014 Lockdown (no writes without proof)",
159
- "Org-wide truthpack sharing + per-team scoped contexts",
160
- "Compliance bundles \u2014 SOC2, HIPAA, PCI-DSS, GDPR",
161
- "SSO / SAML \xB7 RBAC \xB7 audit logs",
162
- "10 seats \xB7 unlimited projects \xB7 API 10k req/day",
163
- "Custom domains + advanced webhooks",
164
- "Slack integration \xB7 dedicated support"
149
+ "Everything in Engineer, plus:",
150
+ "Custom seats and RBAC",
151
+ "SSO / SAML",
152
+ "Audit logs and compliance bundles",
153
+ "Dedicated support and SLA"
165
154
  ],
166
- bestFor: "Orgs with compliance and governance needs",
155
+ bestFor: "Orgs with compliance, governance, and SSO needs",
167
156
  popular: false,
168
- cta: "Start Vibe-Org",
169
- ctaVariant: "default",
157
+ cta: "Contact sales",
158
+ ctaVariant: "outline",
170
159
  supportLevel: "dedicated"
171
160
  }
172
161
  };
@@ -190,7 +179,7 @@ var PLAN_MONTHLY_PRICE_USD = mapPlanValues(
190
179
  var PLAN_PRICE_LABELS = mapPlanValues((plan) => plan.priceLabel);
191
180
  var PLAN_BADGE_TOKENS = mapPlanValues((plan) => plan.badgeToken);
192
181
  var PLANS_ORDERED = PLAN_IDS.map((id) => PLANS[id]);
193
- var MARKETING_PLAN_IDS = PLAN_IDS;
182
+ var MARKETING_PLAN_IDS = ["vibecoder", "engineer"];
194
183
  function validatePlanRegistry() {
195
184
  const errors = [];
196
185
  if (new Set(PLAN_IDS).size !== PLAN_IDS.length) {
@@ -268,8 +257,8 @@ if (typeof process !== "undefined") {
268
257
  }
269
258
  }
270
259
  var ENTITLEMENTS = {
271
- // ── FREE ────────────────────────────────────────────────────────────────
272
- /** Basic scanning (single file, summary only for free) */
260
+ // ── PAID PRODUCT ────────────────────────────────────────────────────────
261
+ /** Basic scanning */
273
262
  SCAN: "v2.scan",
274
263
  /** Workspace-level scanning (doctor, roast, score, codegraph, wikicode, atlas) */
275
264
  SCAN_WORKSPACE: "v2.scan_workspace",
@@ -304,8 +293,8 @@ var ENTITLEMENTS = {
304
293
  SUPPORT: "v2.support",
305
294
  /** Premium full-stack templates (SaaS dashboards, e-commerce, chat, etc.) in the new-project wizard. */
306
295
  PREMIUM_TEMPLATES: "v2.premium_templates",
307
- // ── TEAM ────────────────────────────────────────────────────────────────
308
- /** Team dashboard, shared policies, cross-repo scanning, audit logs */
296
+ // ── ENTERPRISE DASHBOARD ────────────────────────────────────────────────
297
+ /** Enterprise dashboard, shared policies, cross-repo scanning, audit logs */
309
298
  TEAM_COLLABORATION: "v2.team_collaboration",
310
299
  /**
311
300
  * Truthpack-integrated wizard — scans the existing codebase and pre-fills
@@ -322,7 +311,7 @@ var ENTITLEMENTS = {
322
311
  ENTERPRISE_COMPLIANCE: "v2.enterprise_compliance"
323
312
  };
324
313
  var EMPTY_ENTITLEMENT_SET = /* @__PURE__ */ new Set();
325
- var PRO_SET = /* @__PURE__ */ new Set([
314
+ var VIBECODER_SET = /* @__PURE__ */ new Set([
326
315
  ENTITLEMENTS.SCAN,
327
316
  ENTITLEMENTS.SCAN_WORKSPACE,
328
317
  ENTITLEMENTS.GITHUB_ACTION,
@@ -341,19 +330,17 @@ var PRO_SET = /* @__PURE__ */ new Set([
341
330
  ENTITLEMENTS.SUPPORT,
342
331
  ENTITLEMENTS.PREMIUM_TEMPLATES
343
332
  ]);
344
- var TEAM_SET = /* @__PURE__ */ new Set([
345
- ...PRO_SET,
346
- ENTITLEMENTS.TEAM_COLLABORATION,
347
- ENTITLEMENTS.CONTEXT_ENGINE_PRO
348
- ]);
333
+ var ENGINEER_SET = /* @__PURE__ */ new Set([...VIBECODER_SET]);
349
334
  var ENTERPRISE_SET = /* @__PURE__ */ new Set([
350
- ...TEAM_SET,
335
+ ...ENGINEER_SET,
336
+ ENTITLEMENTS.TEAM_COLLABORATION,
337
+ ENTITLEMENTS.CONTEXT_ENGINE_PRO,
351
338
  ENTITLEMENTS.FIREWALL_LOCKDOWN,
352
339
  ENTITLEMENTS.ENTERPRISE_COMPLIANCE
353
340
  ]);
354
341
  var PLAN_ENTITLEMENTS = {
355
- pro: PRO_SET,
356
- team: TEAM_SET,
342
+ vibecoder: VIBECODER_SET,
343
+ engineer: ENGINEER_SET,
357
344
  enterprise: ENTERPRISE_SET
358
345
  };
359
346
  function normalizePlanForEntitlement(plan) {
@@ -472,42 +459,40 @@ var ZERO_QUOTAS = {
472
459
  seatOverageEnabled: false
473
460
  };
474
461
  var PLAN_QUOTAS = {
475
- pro: {
462
+ vibecoder: {
476
463
  findingDetailLimit: Infinity,
477
464
  canAutoFix: true,
478
- canHealPR: false,
465
+ canHealPR: true,
479
466
  canModelFingerprint: true,
480
467
  canRealityMode: true,
481
468
  canISLGenerate: true,
482
469
  canCIBlock: true,
483
470
  scanHistoryDays: 90,
484
- maxProjects: 10,
485
- apiRequestsPerDay: 0,
486
- canExportCSV: false,
487
- canSlackIntegration: false,
471
+ maxProjects: Infinity,
472
+ apiRequestsPerDay: 1e4,
473
+ canExportCSV: true,
474
+ canSlackIntegration: true,
488
475
  maxSeats: 1,
489
- autoFixesPerMonth: 50,
476
+ autoFixesPerMonth: Infinity,
490
477
  scansPerMonth: Infinity,
491
478
  scansPerDay: Infinity,
492
- vibePromptGenerationsPerMonth: 20,
493
- workflowCopiesPerMonth: 10,
494
- forgeGenerationsPerMonth: 10,
495
- realityModeRunsPerWeek: 5,
496
- contextEngineRulesPerMonth: 10,
497
- islSpecsPerMonth: 10,
498
- atlasViewsPerMonth: 20,
499
- guidedRoutesPerDay: 5,
500
- guidedFollowUpsPerRoute: 3,
501
- proofHistoryEntries: 10,
502
- firewallRulesActive: 3,
503
- // 3 rules armed — routes / env / packages
479
+ vibePromptGenerationsPerMonth: Infinity,
480
+ workflowCopiesPerMonth: Infinity,
481
+ forgeGenerationsPerMonth: Infinity,
482
+ realityModeRunsPerWeek: Infinity,
483
+ contextEngineRulesPerMonth: Infinity,
484
+ islSpecsPerMonth: Infinity,
485
+ atlasViewsPerMonth: Infinity,
486
+ guidedRoutesPerDay: Infinity,
487
+ guidedFollowUpsPerRoute: Infinity,
488
+ proofHistoryEntries: Infinity,
489
+ firewallRulesActive: Infinity,
504
490
  missionRunsLifetime: Infinity,
505
- autoFixOverageEnabled: true,
506
- // $0.50/fix beyond 50/mo via Stripe metered
491
+ autoFixOverageEnabled: false,
507
492
  seatOverageEnabled: false
508
493
  // solo plan
509
494
  },
510
- team: {
495
+ engineer: {
511
496
  findingDetailLimit: Infinity,
512
497
  canAutoFix: true,
513
498
  canHealPR: true,
@@ -516,31 +501,29 @@ var PLAN_QUOTAS = {
516
501
  canISLGenerate: true,
517
502
  canCIBlock: true,
518
503
  scanHistoryDays: 90,
519
- maxProjects: 50,
520
- apiRequestsPerDay: 1e3,
504
+ maxProjects: Infinity,
505
+ apiRequestsPerDay: 1e4,
521
506
  canExportCSV: true,
522
- canSlackIntegration: false,
523
- maxSeats: 3,
524
- autoFixesPerMonth: 200,
507
+ canSlackIntegration: true,
508
+ maxSeats: 1,
509
+ autoFixesPerMonth: Infinity,
525
510
  scansPerMonth: Infinity,
526
511
  scansPerDay: Infinity,
527
- vibePromptGenerationsPerMonth: 100,
528
- workflowCopiesPerMonth: 50,
529
- forgeGenerationsPerMonth: 50,
530
- realityModeRunsPerWeek: 20,
531
- contextEngineRulesPerMonth: 50,
532
- islSpecsPerMonth: 50,
533
- atlasViewsPerMonth: 100,
534
- guidedRoutesPerDay: 20,
535
- guidedFollowUpsPerRoute: 10,
536
- proofHistoryEntries: 50,
512
+ vibePromptGenerationsPerMonth: Infinity,
513
+ workflowCopiesPerMonth: Infinity,
514
+ forgeGenerationsPerMonth: Infinity,
515
+ realityModeRunsPerWeek: Infinity,
516
+ contextEngineRulesPerMonth: Infinity,
517
+ islSpecsPerMonth: Infinity,
518
+ atlasViewsPerMonth: Infinity,
519
+ guidedRoutesPerDay: Infinity,
520
+ guidedFollowUpsPerRoute: Infinity,
521
+ proofHistoryEntries: Infinity,
537
522
  firewallRulesActive: Infinity,
538
523
  // unlimited rules + Drift Watcher
539
524
  missionRunsLifetime: Infinity,
540
- autoFixOverageEnabled: true,
541
- // $0.50/fix beyond 200/mo
542
- seatOverageEnabled: true
543
- // $9/seat over 3 via Stripe per-seat price
525
+ autoFixOverageEnabled: false,
526
+ seatOverageEnabled: false
544
527
  },
545
528
  enterprise: {
546
529
  findingDetailLimit: Infinity,
@@ -591,7 +574,7 @@ var FEATURE_REGISTRY = {
591
574
  title: "Unlimited Auto-Fix",
592
575
  subtitle: "AI-powered code repair without limits",
593
576
  benefits: ["No monthly limits", "Smart suggestions", "Safe rollback"],
594
- requiredPlan: "pro",
577
+ requiredPlan: "vibecoder",
595
578
  category: "productivity",
596
579
  upgradeMessage: "Auto-Fix requires Pro. Upgrade to unlock AI-powered code repair."
597
580
  },
@@ -600,7 +583,7 @@ var FEATURE_REGISTRY = {
600
583
  title: "Reality Mode",
601
584
  subtitle: "Browser-based runtime verification",
602
585
  benefits: ["Runtime testing", "Screenshot evidence", "Error detection", "Network validation"],
603
- requiredPlan: "pro",
586
+ requiredPlan: "vibecoder",
604
587
  category: "productivity",
605
588
  upgradeMessage: "Reality Mode requires Pro. Upgrade to unlock runtime verification.",
606
589
  docsUrl: "/docs/reality-mode"
@@ -610,7 +593,7 @@ var FEATURE_REGISTRY = {
610
593
  title: "CommitShield",
611
594
  subtitle: "Pre-commit quality gate",
612
595
  benefits: ["25+ security rules", "Risk scoring", "Evidence bundles"],
613
- requiredPlan: "pro",
596
+ requiredPlan: "vibecoder",
614
597
  category: "productivity"
615
598
  },
616
599
  /** CLI `vibecheck guard` — operator tooling (Pro). */
@@ -619,7 +602,7 @@ var FEATURE_REGISTRY = {
619
602
  title: "Guard",
620
603
  subtitle: "Quality gate & policy enforcement from the CLI",
621
604
  benefits: ["Configurable fail thresholds", "Engine toggles", "CI-friendly output"],
622
- requiredPlan: "pro",
605
+ requiredPlan: "vibecoder",
623
606
  category: "productivity"
624
607
  },
625
608
  /** CLI `vibecheck doctor` — engine / workspace diagnostics (Free). */
@@ -628,19 +611,19 @@ var FEATURE_REGISTRY = {
628
611
  title: "Doctor",
629
612
  subtitle: "Engine health and workspace diagnostics",
630
613
  benefits: ["Engine readiness", "Config validation", "Optional repair flows"],
631
- requiredPlan: "pro",
614
+ requiredPlan: "vibecoder",
632
615
  category: "core"
633
616
  },
634
- /** Truthpack generation / validation — free tier (local CLI + IDE viewer). */
617
+ /** Truthpack generation / validation. */
635
618
  Truthpack: {
636
619
  entitlement: ENTITLEMENTS.SCAN_WORKSPACE,
637
620
  title: "Truthpack",
638
621
  subtitle: "Ground-truth artifacts for your repo",
639
622
  benefits: ["Regenerate truthpack", "Cross-reference validation", "CI contracts"],
640
- requiredPlan: "pro",
623
+ requiredPlan: "vibecoder",
641
624
  category: "analysis"
642
625
  },
643
- /** CLI `vibecheck roast` — stylized scan output (free for everyone; no login on CLI). */
626
+ /** CLI `vibecheck roast` — stylized scan output. */
644
627
  Roast: {
645
628
  entitlement: ENTITLEMENTS.SCAN,
646
629
  title: "Roast",
@@ -652,16 +635,16 @@ var FEATURE_REGISTRY = {
652
635
  "Shareable output",
653
636
  "CLI, MCP, and IDE panel"
654
637
  ],
655
- requiredPlan: "pro",
638
+ requiredPlan: "vibecoder",
656
639
  category: "analysis"
657
640
  },
658
- /** CLI code graph / intent context that builds on local graph (free tier). */
641
+ /** CLI code graph / intent context that builds on local graph. */
659
642
  "Code Graph": {
660
643
  entitlement: ENTITLEMENTS.SCAN,
661
644
  title: "Code Graph",
662
645
  subtitle: "Local dependency and symbol graph",
663
646
  benefits: ["Import/export map", "Intent search", "Proactive file context"],
664
- requiredPlan: "pro",
647
+ requiredPlan: "vibecoder",
665
648
  category: "analysis"
666
649
  },
667
650
  /** Ship / verify workflows from CLI (Pro). */
@@ -670,7 +653,7 @@ var FEATURE_REGISTRY = {
670
653
  title: "Ship Verification",
671
654
  subtitle: "Checklists, reports, and ship gates",
672
655
  benefits: ["Structured ship checks", "Evidence-friendly output"],
673
- requiredPlan: "pro",
656
+ requiredPlan: "vibecoder",
674
657
  category: "productivity"
675
658
  },
676
659
  "Firewall Enforce": {
@@ -678,7 +661,7 @@ var FEATURE_REGISTRY = {
678
661
  title: "Firewall Enforce",
679
662
  subtitle: "Block AI mistakes before save",
680
663
  benefits: ["Pre-save validation", "Intent locking", "Drift prevention"],
681
- requiredPlan: "pro",
664
+ requiredPlan: "vibecoder",
682
665
  category: "productivity",
683
666
  docsUrl: "/docs/firewall"
684
667
  },
@@ -697,7 +680,7 @@ var FEATURE_REGISTRY = {
697
680
  "Short-lived pair code (no inbound ports)",
698
681
  "Local-only execution (your machine stays in control)"
699
682
  ],
700
- requiredPlan: "pro",
683
+ requiredPlan: "vibecoder",
701
684
  category: "productivity",
702
685
  upgradeMessage: "The Web Terminal requires Pro. Upgrade to drive your repo from the dashboard."
703
686
  },
@@ -706,7 +689,7 @@ var FEATURE_REGISTRY = {
706
689
  title: "Cloud Sync",
707
690
  subtitle: "Cross-device synchronization",
708
691
  benefits: ["Multi-device access", "Team sharing", "Automatic backup"],
709
- requiredPlan: "pro",
692
+ requiredPlan: "vibecoder",
710
693
  category: "productivity"
711
694
  },
712
695
  "PDF Reports": {
@@ -714,7 +697,7 @@ var FEATURE_REGISTRY = {
714
697
  title: "PDF Reports",
715
698
  subtitle: "Professional shareable reports",
716
699
  benefits: ["Executive summaries", "Custom branding", "Print-ready"],
717
- requiredPlan: "pro",
700
+ requiredPlan: "vibecoder",
718
701
  category: "productivity"
719
702
  },
720
703
  "Verified Badge": {
@@ -722,7 +705,7 @@ var FEATURE_REGISTRY = {
722
705
  title: "Verified Ship Badge",
723
706
  subtitle: "Dynamic ship badges for your README",
724
707
  benefits: ["Live status", "README embeds", "Trust signals"],
725
- requiredPlan: "pro",
708
+ requiredPlan: "vibecoder",
726
709
  category: "productivity"
727
710
  },
728
711
  "Vibe Prompt": {
@@ -730,7 +713,7 @@ var FEATURE_REGISTRY = {
730
713
  title: "Vibe Prompt",
731
714
  subtitle: "Generate prompt packs from intent",
732
715
  benefits: ["Truth-pack aware", "Implementation prompts", "Verification prompts"],
733
- requiredPlan: "pro",
716
+ requiredPlan: "vibecoder",
734
717
  category: "productivity",
735
718
  upgradeMessage: "Vibe Prompt requires Pro. Upgrade to generate project-aware prompt packs."
736
719
  },
@@ -739,7 +722,7 @@ var FEATURE_REGISTRY = {
739
722
  title: "Review Workflows",
740
723
  subtitle: "Code review workflows for Cursor/Claude",
741
724
  benefits: ["Copy to clipboard", "Install agents", "Workflow templates"],
742
- requiredPlan: "pro",
725
+ requiredPlan: "vibecoder",
743
726
  category: "productivity"
744
727
  },
745
728
  "Flow Workflows": {
@@ -747,7 +730,7 @@ var FEATURE_REGISTRY = {
747
730
  title: "Flow Workflows",
748
731
  subtitle: "AI workflows panel",
749
732
  benefits: ["Copy workflows", "Agent chips", "AI automation"],
750
- requiredPlan: "pro",
733
+ requiredPlan: "vibecoder",
751
734
  category: "productivity"
752
735
  },
753
736
  "WikiCode Atlas": {
@@ -755,7 +738,7 @@ var FEATURE_REGISTRY = {
755
738
  title: "WikiCode Atlas",
756
739
  subtitle: "Code atlas and wiki",
757
740
  benefits: ["Browse codebase", "Feature mapping", "Documentation"],
758
- requiredPlan: "pro",
741
+ requiredPlan: "vibecoder",
759
742
  category: "analysis"
760
743
  },
761
744
  /** LLM-powered guided routes (intent → stops). Pro+ unlimited within plan quotas. */
@@ -768,7 +751,7 @@ var FEATURE_REGISTRY = {
768
751
  "Next/prev stops",
769
752
  "Follow-up Q&A on each stop"
770
753
  ],
771
- requiredPlan: "pro",
754
+ requiredPlan: "vibecoder",
772
755
  category: "analysis"
773
756
  },
774
757
  "Proof History": {
@@ -776,7 +759,7 @@ var FEATURE_REGISTRY = {
776
759
  title: "Proof History",
777
760
  subtitle: "Saved proof bundles beyond last run",
778
761
  benefits: ["90-day history", "Proof chains", "Audit trail"],
779
- requiredPlan: "pro",
762
+ requiredPlan: "vibecoder",
780
763
  category: "productivity",
781
764
  upgradeMessage: "Proof History requires Pro. Upgrade for full proof history and audit trail."
782
765
  },
@@ -785,7 +768,7 @@ var FEATURE_REGISTRY = {
785
768
  title: "Forge",
786
769
  subtitle: "AI code generation (component, api, hook, test)",
787
770
  benefits: ["Component generation", "API scaffolding", "Test generation"],
788
- requiredPlan: "pro",
771
+ requiredPlan: "vibecoder",
789
772
  category: "productivity",
790
773
  upgradeMessage: "Forge requires Pro. Upgrade to unlock AI code generation."
791
774
  },
@@ -794,7 +777,7 @@ var FEATURE_REGISTRY = {
794
777
  title: "GitHub Action",
795
778
  subtitle: "Automated PR quality checks",
796
779
  benefits: ["PR comments", "Status checks", "Branch protection"],
797
- requiredPlan: "pro",
780
+ requiredPlan: "vibecoder",
798
781
  category: "ci_automation",
799
782
  upgradeMessage: "GitHub Action requires Pro. Upgrade to automate PR quality checks."
800
783
  },
@@ -803,7 +786,7 @@ var FEATURE_REGISTRY = {
803
786
  title: "CI/CD Integration",
804
787
  subtitle: "All CI platforms supported",
805
788
  benefits: ["GitHub Actions", "GitLab CI", "CircleCI", "Jenkins"],
806
- requiredPlan: "pro",
789
+ requiredPlan: "vibecoder",
807
790
  category: "ci_automation"
808
791
  },
809
792
  "API Access": {
@@ -811,7 +794,7 @@ var FEATURE_REGISTRY = {
811
794
  title: "API Access",
812
795
  subtitle: "Programmatic scanning & integrations",
813
796
  benefits: ["REST API", "Webhooks", "Custom automation"],
814
- requiredPlan: "pro",
797
+ requiredPlan: "vibecoder",
815
798
  category: "ci_automation"
816
799
  },
817
800
  "Context Engine": {
@@ -819,16 +802,16 @@ var FEATURE_REGISTRY = {
819
802
  title: "Context Engine",
820
803
  subtitle: "Cloud rules, MCP & agents (requires active subscription)",
821
804
  benefits: ["Auto-generate rules", "Team-ready context in IDE", "MCP & API hooks"],
822
- requiredPlan: "pro",
805
+ requiredPlan: "vibecoder",
823
806
  category: "analysis",
824
- upgradeMessage: "Context Engine (cloud rules & agents) requires Vibe-Coder (Pro) or higher."
807
+ upgradeMessage: "Context Engine (cloud rules & agents) requires Developer or higher."
825
808
  },
826
809
  "ISL Studio": {
827
810
  entitlement: ENTITLEMENTS.SCAN_WORKSPACE,
828
811
  title: "ISL Studio",
829
812
  subtitle: "Visual spec editor & code generation",
830
813
  benefits: ["Visual editor", "Real-time validation", "Code generation (credit packs)"],
831
- requiredPlan: "pro",
814
+ requiredPlan: "vibecoder",
832
815
  category: "analysis"
833
816
  },
834
817
  "Deep Scan": {
@@ -836,7 +819,7 @@ var FEATURE_REGISTRY = {
836
819
  title: "Deep Scan",
837
820
  subtitle: "Advanced security analysis",
838
821
  benefits: ["18 production engines", "Runtime proof", "Mock detection"],
839
- requiredPlan: "pro",
822
+ requiredPlan: "vibecoder",
840
823
  category: "analysis"
841
824
  },
842
825
  "Drift Detection": {
@@ -844,7 +827,7 @@ var FEATURE_REGISTRY = {
844
827
  title: "Drift Detection",
845
828
  subtitle: "Code vs spec divergence tracking",
846
829
  benefits: ["Contract drift", "Intent violations", "Auto-alerts"],
847
- requiredPlan: "pro",
830
+ requiredPlan: "vibecoder",
848
831
  category: "analysis"
849
832
  },
850
833
  "Chaos Agent": {
@@ -852,7 +835,7 @@ var FEATURE_REGISTRY = {
852
835
  title: "Chaos Agent",
853
836
  subtitle: "AI-powered bug hunting",
854
837
  benefits: ["Edge case discovery", "Fault injection", "Resilience testing"],
855
- requiredPlan: "pro",
838
+ requiredPlan: "vibecoder",
856
839
  category: "analysis"
857
840
  },
858
841
  "Team Dashboard": {
@@ -924,7 +907,7 @@ var FEATURE_REGISTRY = {
924
907
  title: "Polish",
925
908
  subtitle: "Enterprise-grade code quality engine",
926
909
  benefits: ["Code quality scoring", "Complexity analysis", "Trend tracking"],
927
- requiredPlan: "pro",
910
+ requiredPlan: "vibecoder",
928
911
  category: "productivity"
929
912
  },
930
913
  DocGuard: {
@@ -932,7 +915,7 @@ var FEATURE_REGISTRY = {
932
915
  title: "DocGuard",
933
916
  subtitle: "Documentation quality enforcement",
934
917
  benefits: ["JSDoc validation", "Coverage tracking", "Stale doc detection"],
935
- requiredPlan: "pro",
918
+ requiredPlan: "vibecoder",
936
919
  category: "productivity"
937
920
  },
938
921
  TestGap: {
@@ -940,7 +923,7 @@ var FEATURE_REGISTRY = {
940
923
  title: "TestGap Analysis",
941
924
  subtitle: "Test coverage gap detection",
942
925
  benefits: ["Zero coverage detection", "Happy path analysis", "Orphaned test detection"],
943
- requiredPlan: "pro",
926
+ requiredPlan: "vibecoder",
944
927
  category: "analysis"
945
928
  },
946
929
  ArchRules: {
@@ -948,7 +931,7 @@ var FEATURE_REGISTRY = {
948
931
  title: "Architecture Rules",
949
932
  subtitle: "Enforce architectural patterns",
950
933
  benefits: ["YAML rule config", "6 rule types", "Violation detection"],
951
- requiredPlan: "pro",
934
+ requiredPlan: "vibecoder",
952
935
  category: "analysis"
953
936
  },
954
937
  Provenance: {
@@ -956,7 +939,7 @@ var FEATURE_REGISTRY = {
956
939
  title: "Provenance Tracking",
957
940
  subtitle: "Edit history and attestations",
958
941
  benefits: ["Edit tracking", "Attestation DB", "Audit trail"],
959
- requiredPlan: "pro",
942
+ requiredPlan: "vibecoder",
960
943
  category: "compliance"
961
944
  },
962
945
  "Model Fingerprint": {
@@ -964,7 +947,7 @@ var FEATURE_REGISTRY = {
964
947
  title: "Model Fingerprint",
965
948
  subtitle: "AI model detection and tracking",
966
949
  benefits: ["Model identification", "Version tracking", "Usage analytics"],
967
- requiredPlan: "pro",
950
+ requiredPlan: "vibecoder",
968
951
  category: "analysis"
969
952
  },
970
953
  /** Kickoff / connect project (Free). */
@@ -973,7 +956,7 @@ var FEATURE_REGISTRY = {
973
956
  title: "Kickoff & Connect",
974
957
  subtitle: "Initialize and connect your project",
975
958
  benefits: ["Project scaffolding", "Config generation", "Quick start"],
976
- requiredPlan: "pro",
959
+ requiredPlan: "vibecoder",
977
960
  category: "core"
978
961
  },
979
962
  /** Codegraph — local dependency/symbol graph (Free). */
@@ -982,7 +965,7 @@ var FEATURE_REGISTRY = {
982
965
  title: "Codegraph",
983
966
  subtitle: "Local dependency and symbol graph",
984
967
  benefits: ["Import/export map", "Symbol navigation", "Dependency visualization"],
985
- requiredPlan: "pro",
968
+ requiredPlan: "vibecoder",
986
969
  category: "analysis"
987
970
  },
988
971
  /** WikiCode — codebase wiki and atlas (Free). */
@@ -991,7 +974,7 @@ var FEATURE_REGISTRY = {
991
974
  title: "WikiCode",
992
975
  subtitle: "Codebase wiki and documentation",
993
976
  benefits: ["Browse codebase", "Feature mapping", "Documentation"],
994
- requiredPlan: "pro",
977
+ requiredPlan: "vibecoder",
995
978
  category: "analysis"
996
979
  },
997
980
  /** Vibe Flow — AI workflows panel (Free). */
@@ -1000,13 +983,11 @@ var FEATURE_REGISTRY = {
1000
983
  title: "Vibe Flow",
1001
984
  subtitle: "AI workflow automation",
1002
985
  benefits: ["Workflow templates", "Agent chips", "AI automation"],
1003
- requiredPlan: "pro",
986
+ requiredPlan: "vibecoder",
1004
987
  category: "productivity"
1005
988
  },
1006
989
  /**
1007
- * Mission Run taste-then-gate: free tier ships 1 lifetime run so users
1008
- * can finish their first auto-generated mission. Subsequent runs require
1009
- * Pro. Quota lookup uses `missionRun` FeatureLimitKey → `missionRunsLifetime`.
990
+ * Mission Run quota lookup uses `missionRun` FeatureLimitKey `missionRunsLifetime`.
1010
991
  */
1011
992
  "Mission Run": {
1012
993
  entitlement: ENTITLEMENTS.SCAN_WORKSPACE,
@@ -1015,11 +996,11 @@ var FEATURE_REGISTRY = {
1015
996
  benefits: [
1016
997
  "Auto-generated from your scan",
1017
998
  "Acceptance criteria + verification commands",
1018
- "Pro+ unlimited mission runs"
999
+ "Paid subscribers get mission runs"
1019
1000
  ],
1020
- requiredPlan: "pro",
1001
+ requiredPlan: "vibecoder",
1021
1002
  category: "productivity",
1022
- upgradeMessage: "Mission runs require Vibe-Coder (Pro) or higher."
1003
+ upgradeMessage: "Mission runs require Developer or higher."
1023
1004
  }
1024
1005
  };
1025
1006
  var VALID_ENTITLEMENTS = new Set(Object.values(ENTITLEMENTS));
@@ -1090,7 +1071,7 @@ function canAccessFeature(userPlan, featureName) {
1090
1071
  }
1091
1072
  function getMinimumPlanForFeature(featureName) {
1092
1073
  const meta = FEATURE_REGISTRY[featureName];
1093
- if (!meta) return "pro";
1074
+ if (!meta) return "vibecoder";
1094
1075
  return getRequiredPlan(meta.entitlement);
1095
1076
  }
1096
1077
  function getUpgradeTarget(currentPlan, featureName) {
@@ -1101,7 +1082,7 @@ function getUpgradeTarget(currentPlan, featureName) {
1101
1082
  return meta.requiredPlan;
1102
1083
  }
1103
1084
  var FEATURE_NAMES = {
1104
- // ── Free features ───────────────────────────────────────────────────────
1085
+ // ── Paid product features ───────────────────────────────────────────────
1105
1086
  SCAN_BASIC: "Scan Basic",
1106
1087
  KICKOFF_CONNECT: "Kickoff Connect",
1107
1088
  DOCTOR: "Doctor",
@@ -1115,18 +1096,17 @@ var FEATURE_NAMES = {
1115
1096
  WIKICODE_ATLAS: "WikiCode Atlas",
1116
1097
  /** Truthpack generate/validate — local CLI + IDE; registry key matches {@link FEATURE_REGISTRY} */
1117
1098
  TRUTHPACK: "Truthpack",
1118
- /** LLM guided routes — use getAccessMode for free taste vs Pro unlimited */
1099
+ /** LLM guided routes */
1119
1100
  GUIDED_ROUTE: "Guided Route",
1120
1101
  SHIP_SCORE: "Ship Score",
1121
1102
  ISL_STUDIO: "ISL Studio",
1122
- // ── Taste-then-gate features ────────────────────────────────────────────
1103
+ // ── Legacy quota-aware features ─────────────────────────────────────────
1123
1104
  /**
1124
- * First auto-generated mission free, subsequent mission runs require Pro.
1125
1105
  * Server-side `POST /missions/:id/run` enforces by counting lifetime
1126
1106
  * non-`open` missions for the user.
1127
1107
  */
1128
1108
  MISSION_RUN_FREE_FIRST: "Mission Run",
1129
- // ── Pro features ────────────────────────────────────────────────────────
1109
+ // ── Paid features ───────────────────────────────────────────────────────
1130
1110
  VIBE_PROMPT: "Vibe Prompt",
1131
1111
  PROOF_HISTORY: "Proof History",
1132
1112
  FORGE: "Forge",
@@ -1164,10 +1144,13 @@ var FEATURE_NAMES = {
1164
1144
  SDK_GENERATOR: "SDK Generator",
1165
1145
  COMPLIANCE_AUDIT: "Compliance Audit"
1166
1146
  };
1147
+ function paidUpgradeTarget(plan) {
1148
+ return plan;
1149
+ }
1167
1150
  var INTRO_PRICES = {
1168
- pro: "$1.99",
1169
- team: "$4.99",
1170
- enterprise: "$14.99"
1151
+ vibecoder: null,
1152
+ engineer: null,
1153
+ enterprise: null
1171
1154
  };
1172
1155
  function formatFindingSeverityBreakdown(summary) {
1173
1156
  const parts = [`${summary.total} total`];
@@ -1182,13 +1165,11 @@ function formatFindingSeverityBreakdown(summary) {
1182
1165
  function buildCliUpgradeBlock(featureName, currentPlan) {
1183
1166
  const target = getUpgradeTarget(currentPlan, featureName);
1184
1167
  if (!target) return "";
1185
- const name = PLAN_DISPLAY_NAMES[target];
1186
- const price = PLAN_PRICE_LABELS[target];
1187
- const intro = INTRO_PRICES[target];
1188
- const lines = [
1189
- "",
1190
- ` \u26A1 ${featureName} requires ${name}`
1191
- ];
1168
+ const paidTarget = paidUpgradeTarget(target);
1169
+ const name = PLAN_DISPLAY_NAMES[paidTarget];
1170
+ const price = PLAN_PRICE_LABELS[paidTarget];
1171
+ const intro = INTRO_PRICES[paidTarget];
1172
+ const lines = ["", ` \u26A1 ${featureName} requires ${name}`];
1192
1173
  if (intro) {
1193
1174
  lines.push(` \u{1F525} Pre-launch: ${intro} first month (then ${price})`);
1194
1175
  } else {
@@ -1196,19 +1177,19 @@ function buildCliUpgradeBlock(featureName, currentPlan) {
1196
1177
  }
1197
1178
  lines.push(
1198
1179
  "",
1199
- ` Upgrade: ${getPricingPageUrl("pro")}`,
1180
+ ` Upgrade: ${getPricingPageUrl(paidTarget)}`,
1200
1181
  " Or run: vibecheck auth upgrade",
1201
1182
  ""
1202
1183
  );
1203
1184
  return lines.join("\n");
1204
1185
  }
1205
1186
  function getPricingPageUrl(highlightPlan) {
1206
- const canonicalPlan = normalizePlanId(highlightPlan) ;
1207
- return getCheckoutUrl(canonicalPlan ?? "pro", void 0, "pricing");
1187
+ const canonicalPlan = highlightPlan ? normalizePlanId(highlightPlan) : null;
1188
+ return getCheckoutUrl(canonicalPlan ?? "vibecoder", void 0, "pricing");
1208
1189
  }
1209
1190
  function getCheckoutUrl(plan, email, source = "extension", origin = "https://vibecheckai.dev") {
1210
1191
  const canonicalPlan = normalizePlanId(plan ?? null);
1211
- const target = canonicalPlan ?? "pro";
1192
+ const target = paidUpgradeTarget(canonicalPlan ?? "vibecoder");
1212
1193
  const params = new URLSearchParams();
1213
1194
  params.set("plan", target);
1214
1195
  params.set("source", source);
@@ -1247,8 +1228,8 @@ function buildGatedScanResponse(opts) {
1247
1228
  category: f.category,
1248
1229
  ruleId: f.ruleId,
1249
1230
  _gated: true,
1250
- _upgradeMessage: "Upgrade to Vibe-Coder to see the full error details, location, and fix suggestion.",
1251
- _upgradeUrl: getPricingPageUrl("pro")
1231
+ _upgradeMessage: "Start Paid to see the full error details, location, and fix suggestion.",
1232
+ _upgradeUrl: getPricingPageUrl("vibecoder")
1252
1233
  }));
1253
1234
  return {
1254
1235
  gated: true,
@@ -1259,15 +1240,19 @@ function buildGatedScanResponse(opts) {
1259
1240
  findings: gatedFindings,
1260
1241
  upgrade: {
1261
1242
  show: true,
1262
- message: `${opts.summary.total} issues found (${opts.summary.critical} critical, ${opts.summary.high} high, ${opts.summary.medium} medium). Upgrade to Vibe-Coder to see every error with location, explanation, and fix suggestion.`,
1263
- url: getPricingPageUrl("pro"),
1264
- buttonLabel: "Upgrade to Vibe-Coder"
1243
+ message: `${opts.summary.total} issues found (${opts.summary.critical} critical, ${opts.summary.high} high, ${opts.summary.medium} medium). Start Paid to see every error with location, explanation, and fix suggestion.`,
1244
+ url: getPricingPageUrl("vibecoder"),
1245
+ buttonLabel: "Start Vibecoder"
1265
1246
  }
1266
1247
  };
1267
1248
  }
1268
- var DAILY_SCAN_LIMIT_UPGRADE_URL = getCheckoutUrl("pro", void 0, "daily_scan_cap");
1249
+ var DAILY_SCAN_LIMIT_UPGRADE_URL = getCheckoutUrl(
1250
+ "vibecoder",
1251
+ void 0,
1252
+ "daily_scan_cap"
1253
+ );
1269
1254
  function formatDailyScanLimitMessage(usage) {
1270
- return `Daily scan limit reached (${usage.limit}/day). Upgrade to Vibe-Coder (${PLAN_PRICE_LABELS.pro}) for unlimited scans.`;
1255
+ return `Daily scan limit reached (${usage.limit}/day). Upgrade to Vibecoder (${PLAN_PRICE_LABELS.vibecoder}) for access.`;
1271
1256
  }
1272
1257
  var DEFAULT_API_BASE_URL = "https://api.vibecheckai.dev";
1273
1258
  function isRecord(value) {
@@ -1308,65 +1293,81 @@ function coerceCanonicalAccessResponse(value) {
1308
1293
  }
1309
1294
  async function fetchCanonicalAccess(options = {}) {
1310
1295
  const fetchImpl = options.fetchImpl ?? fetch;
1296
+ const headers = buildPlatformAuthHeaders(options.token, options.headers);
1297
+ const ci = options.clientIdentity;
1298
+ if (ci?.clientType?.trim() && ci?.clientVersion?.trim()) {
1299
+ headers.set("X-Client-Type", ci.clientType.trim());
1300
+ headers.set("X-Client-Version", ci.clientVersion.trim());
1301
+ }
1311
1302
  const response = await fetchImpl(getCanonicalAccessUrl(options.apiBaseUrl), {
1312
- headers: buildPlatformAuthHeaders(options.token, options.headers),
1303
+ headers,
1313
1304
  signal: options.signal,
1314
1305
  credentials: options.credentials
1315
1306
  });
1316
- if (!response.ok) {
1307
+ let json;
1308
+ try {
1309
+ json = await response.json();
1310
+ } catch {
1317
1311
  return {
1318
1312
  ok: false,
1319
1313
  status: response.status,
1320
- data: null
1314
+ data: null,
1315
+ error: null
1321
1316
  };
1322
1317
  }
1323
- let json;
1324
- try {
1325
- json = await response.json();
1326
- } catch {
1318
+ if (!response.ok) {
1319
+ const root = json;
1320
+ const errObj = root?.error;
1321
+ const error = errObj && typeof errObj === "object" ? {
1322
+ code: typeof errObj.code === "string" ? errObj.code : void 0,
1323
+ message: typeof errObj.message === "string" ? errObj.message : void 0
1324
+ } : null;
1327
1325
  return {
1328
1326
  ok: false,
1329
1327
  status: response.status,
1330
- data: null
1328
+ data: null,
1329
+ error
1331
1330
  };
1332
1331
  }
1333
1332
  const data = coerceCanonicalAccessResponse(json);
1334
1333
  return {
1335
1334
  ok: data !== null,
1336
1335
  status: response.status,
1337
- data
1336
+ data,
1337
+ error: null
1338
1338
  };
1339
1339
  }
1340
1340
  var CLI_COMMAND_MIN_PLAN = {
1341
- scan: "pro",
1342
- score: "pro",
1343
- roast: "pro",
1344
- truthpack: "pro",
1345
- init: "pro",
1346
- doctor: "pro",
1341
+ scan: "vibecoder",
1342
+ score: "vibecoder",
1343
+ roast: "vibecoder",
1344
+ truthpack: "vibecoder",
1345
+ init: "vibecoder",
1346
+ doctor: "vibecoder",
1347
1347
  login: null,
1348
1348
  logout: null,
1349
1349
  whoami: null,
1350
1350
  completion: null,
1351
1351
  help: null,
1352
1352
  version: null,
1353
- guard: "pro",
1354
- ship: "pro",
1355
- rules: "pro",
1356
- prompt: "pro",
1357
- fix: "pro",
1358
- polish: "pro",
1359
- reality: "pro",
1360
- forge: "pro",
1361
- context: "pro",
1362
- review: "pro",
1363
- firewall: "pro",
1364
- commitshield: "pro",
1365
- docguard: "pro",
1366
- surgeon: "pro",
1367
- native: "pro",
1368
- nexus: "pro",
1369
- serve: "pro"
1353
+ guard: "vibecoder",
1354
+ ship: "vibecoder",
1355
+ rules: "vibecoder",
1356
+ prompt: "vibecoder",
1357
+ fix: "vibecoder",
1358
+ polish: "vibecoder",
1359
+ reality: "vibecoder",
1360
+ forge: "vibecoder",
1361
+ context: "vibecoder",
1362
+ review: "vibecoder",
1363
+ firewall: "vibecoder",
1364
+ commitshield: "vibecoder",
1365
+ docguard: "vibecoder",
1366
+ surgeon: "vibecoder",
1367
+ native: "vibecoder",
1368
+ nexus: "vibecoder",
1369
+ neuro: "vibecoder",
1370
+ serve: "vibecoder"
1370
1371
  };
1371
1372
  Object.fromEntries(
1372
1373
  Object.entries(CLI_COMMAND_MIN_PLAN).map(([k, v]) => [k.toLowerCase(), v])
@@ -1437,6 +1438,8 @@ Object.fromEntries(
1437
1438
  surgeon: FEATURE_NAMES.SCAN_BASIC,
1438
1439
  native: FEATURE_NAMES.DEEP_SCAN,
1439
1440
  nexus: FEATURE_NAMES.CODE_GRAPH,
1441
+ /** Neuro aligns with Context Engine stack in server access payloads. */
1442
+ neuro: FEATURE_NAMES.CONTEXT_ENGINE,
1440
1443
  serve: FEATURE_NAMES.WEB_TERMINAL
1441
1444
  });
1442
1445
 
@@ -1561,46 +1564,6 @@ var TEAM_ENTITLEMENTS = new Set(PRO_ENTITLEMENTS);
1561
1564
  ENTITLEMENTS2.ENTERPRISE_SIGNED_BUNDLES,
1562
1565
  ENTITLEMENTS2.ENTERPRISE_MULTI_REPO
1563
1566
  ]);
1564
- function quotasToPlanLimits(q) {
1565
- return {
1566
- findingDetailLimit: q.findingDetailLimit,
1567
- canAutoFix: q.canAutoFix,
1568
- canHealPR: q.canHealPR,
1569
- canModelFingerprint: q.canModelFingerprint,
1570
- canRealityMode: q.canRealityMode,
1571
- canISLGenerate: q.canISLGenerate,
1572
- canCIBlock: q.canCIBlock,
1573
- scanHistoryDays: q.scanHistoryDays,
1574
- maxProjects: q.maxProjects,
1575
- apiRequestsPerDay: q.apiRequestsPerDay,
1576
- canExportCSV: q.canExportCSV,
1577
- canSlackIntegration: q.canSlackIntegration,
1578
- scansPerDay: q.scansPerDay
1579
- };
1580
- }
1581
- ({
1582
- free: quotasToPlanLimits(getQuotas(null)),
1583
- pro: quotasToPlanLimits(PLAN_QUOTAS.pro),
1584
- team: quotasToPlanLimits(PLAN_QUOTAS.team),
1585
- enterprise: quotasToPlanLimits(PLAN_QUOTAS.enterprise)
1586
- });
1587
- ({
1588
- pro: {
1589
- name: PLANS.pro.displayName,
1590
- tagline: PLANS.pro.tagline,
1591
- price: PLANS.pro.monthlyPriceUsd,
1592
- priceLabel: PLANS.pro.priceLabel},
1593
- team: {
1594
- name: PLANS.team.displayName,
1595
- tagline: PLANS.team.tagline,
1596
- price: PLANS.team.monthlyPriceUsd,
1597
- priceLabel: PLANS.team.priceLabel},
1598
- enterprise: {
1599
- name: PLANS.enterprise.displayName,
1600
- tagline: PLANS.enterprise.tagline,
1601
- price: PLANS.enterprise.monthlyPriceUsd,
1602
- priceLabel: PLANS.enterprise.priceLabel}
1603
- });
1604
1567
 
1605
1568
  // ../shared-types/dist/risk-dimensions.js
1606
1569
  var RISK_DIMENSIONS = [