@girardmedia/bootspring 2.5.1 → 2.5.2

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.
@@ -390,7 +390,7 @@ interface InstallContext {
390
390
  scriptPath: string;
391
391
  }
392
392
  declare const PACKAGE_NAME = "@girardmedia/bootspring";
393
- declare const CURRENT_VERSION = "2.5.0";
393
+ declare const CURRENT_VERSION = "2.5.1";
394
394
  declare const DEFAULT_INTERVAL_MS: number;
395
395
  declare const STATE_PATH: string;
396
396
  declare function compareVersions(a: string, b: string): number;
@@ -563,8 +563,16 @@ declare const FEATURE_GATES: Record<string, string[]>;
563
563
  declare const PRESEED_PAID_COMMANDS: string[];
564
564
  declare const SEED_PAID_COMMANDS: string[];
565
565
  declare const AGENT_TIERS: Record<string, string>;
566
+ /** Agents available on the free trial tier. All others require Pro+. */
567
+ declare const FREE_AGENTS: Set<string>;
566
568
  declare const PREMIUM_SKILL_CATEGORIES: string[];
567
569
  declare const PREMIUM_SKILL_PATTERNS: string[];
570
+ /** Monthly generation limits per tier */
571
+ declare const GENERATION_LIMITS: Record<string, number>;
572
+ /** Custom prompts access by tier */
573
+ declare const CUSTOM_PROMPTS_TIERS: Set<string>;
574
+ /** Dual-LLM merge access by tier */
575
+ declare const DUAL_LLM_TIERS: Set<string>;
568
576
  declare function getCachedEntitlements(): Entitlements | null;
569
577
  declare function cacheEntitlements(entitlements: Entitlements): void;
570
578
  declare function clearCache(): void;
@@ -591,13 +599,24 @@ declare function checkPreseedAccess(command: string): CommandAccessResult;
591
599
  declare function checkSeedAccess(command: string): CommandAccessResult;
592
600
  declare function requirePreseedAccess(command: string): void;
593
601
  declare function requireSeedAccess(command: string): void;
602
+ declare function checkGenerationAccess(): {
603
+ allowed: boolean;
604
+ limit: number;
605
+ tier: string;
606
+ };
607
+ declare function checkCustomPromptsAccess(): boolean;
608
+ declare function checkDualLlmAccess(): boolean;
594
609
 
595
610
  declare const tierEnforcement_AGENT_TIERS: typeof AGENT_TIERS;
596
611
  type tierEnforcement_AgentAccessResult = AgentAccessResult;
612
+ declare const tierEnforcement_CUSTOM_PROMPTS_TIERS: typeof CUSTOM_PROMPTS_TIERS;
597
613
  type tierEnforcement_CommandAccessResult = CommandAccessResult;
598
614
  declare const tierEnforcement_DEFAULT_LIMITS: typeof DEFAULT_LIMITS;
615
+ declare const tierEnforcement_DUAL_LLM_TIERS: typeof DUAL_LLM_TIERS;
599
616
  type tierEnforcement_Entitlements = Entitlements;
600
617
  declare const tierEnforcement_FEATURE_GATES: typeof FEATURE_GATES;
618
+ declare const tierEnforcement_FREE_AGENTS: typeof FREE_AGENTS;
619
+ declare const tierEnforcement_GENERATION_LIMITS: typeof GENERATION_LIMITS;
601
620
  type tierEnforcement_LimitCheckResult = LimitCheckResult;
602
621
  declare const tierEnforcement_PREMIUM_SKILL_CATEGORIES: typeof PREMIUM_SKILL_CATEGORIES;
603
622
  declare const tierEnforcement_PREMIUM_SKILL_PATTERNS: typeof PREMIUM_SKILL_PATTERNS;
@@ -613,6 +632,9 @@ type tierEnforcement_UpgradePromptOptions = UpgradePromptOptions;
613
632
  type tierEnforcement_UpgradePromptPlacement = UpgradePromptPlacement;
614
633
  declare const tierEnforcement_cacheEntitlements: typeof cacheEntitlements;
615
634
  declare const tierEnforcement_checkAgentAccess: typeof checkAgentAccess;
635
+ declare const tierEnforcement_checkCustomPromptsAccess: typeof checkCustomPromptsAccess;
636
+ declare const tierEnforcement_checkDualLlmAccess: typeof checkDualLlmAccess;
637
+ declare const tierEnforcement_checkGenerationAccess: typeof checkGenerationAccess;
616
638
  declare const tierEnforcement_checkLimit: typeof checkLimit;
617
639
  declare const tierEnforcement_checkPreseedAccess: typeof checkPreseedAccess;
618
640
  declare const tierEnforcement_checkSeedAccess: typeof checkSeedAccess;
@@ -635,7 +657,7 @@ declare const tierEnforcement_requirePreseedAccess: typeof requirePreseedAccess;
635
657
  declare const tierEnforcement_requireSeedAccess: typeof requireSeedAccess;
636
658
  declare const tierEnforcement_requireTier: typeof requireTier;
637
659
  declare namespace tierEnforcement {
638
- export { tierEnforcement_AGENT_TIERS as AGENT_TIERS, type tierEnforcement_AgentAccessResult as AgentAccessResult, type tierEnforcement_CommandAccessResult as CommandAccessResult, tierEnforcement_DEFAULT_LIMITS as DEFAULT_LIMITS, type tierEnforcement_Entitlements as Entitlements, tierEnforcement_FEATURE_GATES as FEATURE_GATES, type tierEnforcement_LimitCheckResult as LimitCheckResult, tierEnforcement_PREMIUM_SKILL_CATEGORIES as PREMIUM_SKILL_CATEGORIES, tierEnforcement_PREMIUM_SKILL_PATTERNS as PREMIUM_SKILL_PATTERNS, tierEnforcement_PRESEED_PAID_COMMANDS as PRESEED_PAID_COMMANDS, tierEnforcement_SEED_PAID_COMMANDS as SEED_PAID_COMMANDS, type tierEnforcement_SkillAccessResult as SkillAccessResult, tierEnforcement_TIER_HIERARCHY as TIER_HIERARCHY, type tierEnforcement_TierError as TierError, type tierEnforcement_TierLimits as TierLimits, type tierEnforcement_UpgradePromptContext as UpgradePromptContext, type tierEnforcement_UpgradePromptExperiment as UpgradePromptExperiment, type tierEnforcement_UpgradePromptOptions as UpgradePromptOptions, type tierEnforcement_UpgradePromptPlacement as UpgradePromptPlacement, tierEnforcement_cacheEntitlements as cacheEntitlements, tierEnforcement_checkAgentAccess as checkAgentAccess, tierEnforcement_checkLimit as checkLimit, tierEnforcement_checkPreseedAccess as checkPreseedAccess, tierEnforcement_checkSeedAccess as checkSeedAccess, checkSkillAccess$1 as checkSkillAccess, tierEnforcement_clearCache as clearCache, tierEnforcement_fetchEntitlements as fetchEntitlements, tierEnforcement_formatTierBadge as formatTierBadge, tierEnforcement_getCachedEntitlements as getCachedEntitlements, tierEnforcement_getEntitlements as getEntitlements, tierEnforcement_getLimits as getLimits, tierEnforcement_getTier as getTier, tierEnforcement_getTierLevel as getTierLevel, tierEnforcement_getUpgradePrompt as getUpgradePrompt, tierEnforcement_getUpgradePromptContext as getUpgradePromptContext, tierEnforcement_getUpgradePromptExperiment as getUpgradePromptExperiment, tierEnforcement_hasFeature as hasFeature, tierEnforcement_isSkillPremium as isSkillPremium, tierEnforcement_meetsTierRequirement as meetsTierRequirement, tierEnforcement_requireFeature as requireFeature, tierEnforcement_requirePreseedAccess as requirePreseedAccess, tierEnforcement_requireSeedAccess as requireSeedAccess, tierEnforcement_requireTier as requireTier };
660
+ export { tierEnforcement_AGENT_TIERS as AGENT_TIERS, type tierEnforcement_AgentAccessResult as AgentAccessResult, tierEnforcement_CUSTOM_PROMPTS_TIERS as CUSTOM_PROMPTS_TIERS, type tierEnforcement_CommandAccessResult as CommandAccessResult, tierEnforcement_DEFAULT_LIMITS as DEFAULT_LIMITS, tierEnforcement_DUAL_LLM_TIERS as DUAL_LLM_TIERS, type tierEnforcement_Entitlements as Entitlements, tierEnforcement_FEATURE_GATES as FEATURE_GATES, tierEnforcement_FREE_AGENTS as FREE_AGENTS, tierEnforcement_GENERATION_LIMITS as GENERATION_LIMITS, type tierEnforcement_LimitCheckResult as LimitCheckResult, tierEnforcement_PREMIUM_SKILL_CATEGORIES as PREMIUM_SKILL_CATEGORIES, tierEnforcement_PREMIUM_SKILL_PATTERNS as PREMIUM_SKILL_PATTERNS, tierEnforcement_PRESEED_PAID_COMMANDS as PRESEED_PAID_COMMANDS, tierEnforcement_SEED_PAID_COMMANDS as SEED_PAID_COMMANDS, type tierEnforcement_SkillAccessResult as SkillAccessResult, tierEnforcement_TIER_HIERARCHY as TIER_HIERARCHY, type tierEnforcement_TierError as TierError, type tierEnforcement_TierLimits as TierLimits, type tierEnforcement_UpgradePromptContext as UpgradePromptContext, type tierEnforcement_UpgradePromptExperiment as UpgradePromptExperiment, type tierEnforcement_UpgradePromptOptions as UpgradePromptOptions, type tierEnforcement_UpgradePromptPlacement as UpgradePromptPlacement, tierEnforcement_cacheEntitlements as cacheEntitlements, tierEnforcement_checkAgentAccess as checkAgentAccess, tierEnforcement_checkCustomPromptsAccess as checkCustomPromptsAccess, tierEnforcement_checkDualLlmAccess as checkDualLlmAccess, tierEnforcement_checkGenerationAccess as checkGenerationAccess, tierEnforcement_checkLimit as checkLimit, tierEnforcement_checkPreseedAccess as checkPreseedAccess, tierEnforcement_checkSeedAccess as checkSeedAccess, checkSkillAccess$1 as checkSkillAccess, tierEnforcement_clearCache as clearCache, tierEnforcement_fetchEntitlements as fetchEntitlements, tierEnforcement_formatTierBadge as formatTierBadge, tierEnforcement_getCachedEntitlements as getCachedEntitlements, tierEnforcement_getEntitlements as getEntitlements, tierEnforcement_getLimits as getLimits, tierEnforcement_getTier as getTier, tierEnforcement_getTierLevel as getTierLevel, tierEnforcement_getUpgradePrompt as getUpgradePrompt, tierEnforcement_getUpgradePromptContext as getUpgradePromptContext, tierEnforcement_getUpgradePromptExperiment as getUpgradePromptExperiment, tierEnforcement_hasFeature as hasFeature, tierEnforcement_isSkillPremium as isSkillPremium, tierEnforcement_meetsTierRequirement as meetsTierRequirement, tierEnforcement_requireFeature as requireFeature, tierEnforcement_requirePreseedAccess as requirePreseedAccess, tierEnforcement_requireSeedAccess as requireSeedAccess, tierEnforcement_requireTier as requireTier };
639
661
  }
640
662
 
641
663
  declare const LOCAL_MODE = "local";
package/dist/core.js CHANGED
@@ -372,7 +372,7 @@ var init_release = __esm({
372
372
  "../../packages/shared/src/release.ts"() {
373
373
  "use strict";
374
374
  init_cjs_shims();
375
- BOOTSPRING_VERSION = "2.5.0";
375
+ BOOTSPRING_VERSION = "2.5.1";
376
376
  BOOTSPRING_PACKAGE_NAME = "@girardmedia/bootspring";
377
377
  }
378
378
  });
@@ -18427,8 +18427,12 @@ Installing to ${target.name}...`);
18427
18427
  var tier_enforcement_exports = {};
18428
18428
  __export2(tier_enforcement_exports, {
18429
18429
  AGENT_TIERS: () => AGENT_TIERS,
18430
+ CUSTOM_PROMPTS_TIERS: () => CUSTOM_PROMPTS_TIERS,
18430
18431
  DEFAULT_LIMITS: () => DEFAULT_LIMITS,
18432
+ DUAL_LLM_TIERS: () => DUAL_LLM_TIERS,
18431
18433
  FEATURE_GATES: () => FEATURE_GATES,
18434
+ FREE_AGENTS: () => FREE_AGENTS,
18435
+ GENERATION_LIMITS: () => GENERATION_LIMITS,
18432
18436
  PREMIUM_SKILL_CATEGORIES: () => PREMIUM_SKILL_CATEGORIES,
18433
18437
  PREMIUM_SKILL_PATTERNS: () => PREMIUM_SKILL_PATTERNS,
18434
18438
  PRESEED_PAID_COMMANDS: () => PRESEED_PAID_COMMANDS,
@@ -18436,6 +18440,9 @@ Installing to ${target.name}...`);
18436
18440
  TIER_HIERARCHY: () => TIER_HIERARCHY,
18437
18441
  cacheEntitlements: () => cacheEntitlements,
18438
18442
  checkAgentAccess: () => checkAgentAccess,
18443
+ checkCustomPromptsAccess: () => checkCustomPromptsAccess,
18444
+ checkDualLlmAccess: () => checkDualLlmAccess,
18445
+ checkGenerationAccess: () => checkGenerationAccess,
18439
18446
  checkLimit: () => checkLimit,
18440
18447
  checkPreseedAccess: () => checkPreseedAccess,
18441
18448
  checkSeedAccess: () => checkSeedAccess,
@@ -18479,11 +18486,12 @@ Installing to ${target.name}...`);
18479
18486
  custom: 3
18480
18487
  };
18481
18488
  var DEFAULT_LIMITS = {
18482
- free: { projects: 1, apiCallsPerMonth: 500, devices: 1, teamSeats: 1, storage: "100MB" },
18483
- founder: { projects: 5, apiCallsPerMonth: 1e4, devices: 3, teamSeats: 1, storage: "5GB" },
18484
- pro: { projects: 5, apiCallsPerMonth: 1e4, devices: 3, teamSeats: 1, storage: "5GB" },
18485
- team: { projects: 20, apiCallsPerMonth: 5e4, devices: 10, teamSeats: 5, storage: "50GB" },
18486
- enterprise: { projects: 100, apiCallsPerMonth: 5e5, devices: 50, teamSeats: 20, storage: "500GB" },
18489
+ free: { projects: 1, apiCallsPerMonth: 100, devices: 1, teamSeats: 1, storage: "50MB" },
18490
+ // one-time trial credits, not recurring
18491
+ founder: { projects: 5, apiCallsPerMonth: 5e3, devices: 1, teamSeats: 1, storage: "2GB" },
18492
+ pro: { projects: 5, apiCallsPerMonth: 5e3, devices: 1, teamSeats: 1, storage: "2GB" },
18493
+ team: { projects: 15, apiCallsPerMonth: 25e3, devices: 2, teamSeats: 3, storage: "25GB" },
18494
+ enterprise: { projects: 50, apiCallsPerMonth: 1e5, devices: 5, teamSeats: 10, storage: "250GB" },
18487
18495
  custom: { projects: 999, apiCallsPerMonth: 999999, devices: 999, teamSeats: 999, storage: "1TB" }
18488
18496
  };
18489
18497
  var FEATURE_GATES = {
@@ -18542,6 +18550,7 @@ Installing to ${target.name}...`);
18542
18550
  "priority_support",
18543
18551
  "team_features",
18544
18552
  "presence",
18553
+ "custom_policies",
18545
18554
  "preseed.*",
18546
18555
  "seed.*"
18547
18556
  ],
@@ -18577,18 +18586,28 @@ Installing to ${target.name}...`);
18577
18586
  var PRESEED_PAID_COMMANDS = ["pull", "push", "workflow", "merge", "start"];
18578
18587
  var SEED_PAID_COMMANDS = ["scaffold", "synthesize", "generate"];
18579
18588
  var AGENT_TIERS = {
18589
+ // Business agents — Pro tier
18580
18590
  "business-strategy-expert": "pro",
18581
18591
  "competitive-analysis-expert": "pro",
18582
18592
  "financial-expert": "pro",
18593
+ "fundraising-expert": "pro",
18583
18594
  "growth-expert": "pro",
18595
+ "investor-relations-expert": "pro",
18584
18596
  "legal-expert": "pro",
18585
18597
  "operations-expert": "pro",
18598
+ "partnerships-expert": "pro",
18599
+ "private-equity-expert": "pro",
18586
18600
  "sales-expert": "pro",
18587
- "fundraising-expert": "team",
18588
- "investor-relations-expert": "team",
18589
- "partnerships-expert": "team",
18590
- "private-equity-expert": "team"
18601
+ // Design agent — Pro tier
18602
+ "ui-ux-expert": "pro",
18603
+ "content-expert": "pro",
18604
+ "marketing-expert": "pro",
18605
+ "product-expert": "pro"
18591
18606
  };
18607
+ var FREE_AGENTS = /* @__PURE__ */ new Set([
18608
+ "database-expert",
18609
+ "frontend-expert"
18610
+ ]);
18592
18611
  var PREMIUM_SKILL_CATEGORIES = [
18593
18612
  "ai",
18594
18613
  "payments",
@@ -18614,6 +18633,16 @@ Installing to ${target.name}...`);
18614
18633
  "ui/command-palette",
18615
18634
  "ui/data-tables"
18616
18635
  ];
18636
+ var GENERATION_LIMITS = {
18637
+ free: 0,
18638
+ founder: 25,
18639
+ pro: 25,
18640
+ team: 100,
18641
+ enterprise: 500,
18642
+ custom: 999999
18643
+ };
18644
+ var CUSTOM_PROMPTS_TIERS = /* @__PURE__ */ new Set(["enterprise", "custom"]);
18645
+ var DUAL_LLM_TIERS = /* @__PURE__ */ new Set(["enterprise", "custom"]);
18617
18646
  var FREE_SKILL_OVERRIDES = ["security/validation", "deployment/docker"];
18618
18647
  var UPGRADE_URL = "https://bootspring.com/pricing";
18619
18648
  var FEATURE_COPY = {
@@ -18735,8 +18764,14 @@ Installing to ${target.name}...`);
18735
18764
  return getTierLevel(user) >= getTierLevel(requiredTier);
18736
18765
  }
18737
18766
  function checkAgentAccess(agentId) {
18738
- const requiredTier = AGENT_TIERS[agentId];
18739
18767
  const userTier = getTier2();
18768
+ if (getTierLevel(userTier) === 0) {
18769
+ if (!FREE_AGENTS.has(agentId)) {
18770
+ return { allowed: false, requiredTier: "pro", userTier };
18771
+ }
18772
+ return { allowed: true, userTier };
18773
+ }
18774
+ const requiredTier = AGENT_TIERS[agentId];
18740
18775
  if (!requiredTier) {
18741
18776
  return { allowed: true, userTier };
18742
18777
  }
@@ -19007,6 +19042,17 @@ ${experimentLine}
19007
19042
  throw error;
19008
19043
  }
19009
19044
  }
19045
+ function checkGenerationAccess() {
19046
+ const tier = getTier2();
19047
+ const limit = GENERATION_LIMITS[tier] ?? 0;
19048
+ return { allowed: limit > 0, limit, tier };
19049
+ }
19050
+ function checkCustomPromptsAccess() {
19051
+ return CUSTOM_PROMPTS_TIERS.has(getTier2());
19052
+ }
19053
+ function checkDualLlmAccess() {
19054
+ return DUAL_LLM_TIERS.has(getTier2());
19055
+ }
19010
19056
  var entitlements_exports = {};
19011
19057
  __export2(entitlements_exports, {
19012
19058
  LOCAL_MODE: () => LOCAL_MODE,
@@ -21265,7 +21311,7 @@ ${COLORS2.dim}Run "bootspring mcp" for server options${COLORS2.reset}
21265
21311
  console.log(`${COLORS2.dim}Run "bootspring mcp" for setup instructions.${COLORS2.reset}
21266
21312
  `);
21267
21313
  }
21268
- var BOOTSPRING_VERSION2 = "2.5.0";
21314
+ var BOOTSPRING_VERSION2 = "2.5.1";
21269
21315
  var BOOTSPRING_PACKAGE_NAME2 = "@girardmedia/bootspring";
21270
21316
  var REDACTED2 = "[REDACTED]";
21271
21317
  var SENSITIVE_KEY_PATTERN2 = /(?:^|[_-])(api[_-]?key|token|refresh[_-]?token|authorization|x[_-]?api[_-]?key|project[_-]?id)$/i;
@@ -21313,7 +21359,7 @@ var require_package = __commonJS({
21313
21359
  "../../../package.json"(exports2, module2) {
21314
21360
  module2.exports = {
21315
21361
  name: "bootspring-workspace",
21316
- version: "2.5.0",
21362
+ version: "2.5.1",
21317
21363
  private: true,
21318
21364
  description: "Workspace tooling for the Bootspring monorepo",
21319
21365
  keywords: [
@@ -21333,6 +21379,9 @@ var require_package = __commonJS({
21333
21379
  type: "git",
21334
21380
  url: "git+https://github.com/Girard-Media/bootspring.git"
21335
21381
  },
21382
+ bin: {
21383
+ bootspring: "./monorepo/apps/cli/bin/bootspring.js"
21384
+ },
21336
21385
  homepage: "https://bootspring.com",
21337
21386
  bugs: {
21338
21387
  url: "https://github.com/Girard-Media/bootspring/issues"
@@ -31351,7 +31351,7 @@ var init_release = __esm({
31351
31351
  "../../packages/shared/src/release.ts"() {
31352
31352
  "use strict";
31353
31353
  init_cjs_shims();
31354
- BOOTSPRING_VERSION = "2.5.0";
31354
+ BOOTSPRING_VERSION = "2.5.1";
31355
31355
  BOOTSPRING_PACKAGE_NAME = "@girardmedia/bootspring";
31356
31356
  }
31357
31357
  });
@@ -49406,8 +49406,12 @@ Installing to ${target.name}...`);
49406
49406
  var tier_enforcement_exports = {};
49407
49407
  __export2(tier_enforcement_exports, {
49408
49408
  AGENT_TIERS: () => AGENT_TIERS,
49409
+ CUSTOM_PROMPTS_TIERS: () => CUSTOM_PROMPTS_TIERS,
49409
49410
  DEFAULT_LIMITS: () => DEFAULT_LIMITS,
49411
+ DUAL_LLM_TIERS: () => DUAL_LLM_TIERS,
49410
49412
  FEATURE_GATES: () => FEATURE_GATES,
49413
+ FREE_AGENTS: () => FREE_AGENTS,
49414
+ GENERATION_LIMITS: () => GENERATION_LIMITS,
49411
49415
  PREMIUM_SKILL_CATEGORIES: () => PREMIUM_SKILL_CATEGORIES,
49412
49416
  PREMIUM_SKILL_PATTERNS: () => PREMIUM_SKILL_PATTERNS,
49413
49417
  PRESEED_PAID_COMMANDS: () => PRESEED_PAID_COMMANDS,
@@ -49415,6 +49419,9 @@ Installing to ${target.name}...`);
49415
49419
  TIER_HIERARCHY: () => TIER_HIERARCHY,
49416
49420
  cacheEntitlements: () => cacheEntitlements,
49417
49421
  checkAgentAccess: () => checkAgentAccess,
49422
+ checkCustomPromptsAccess: () => checkCustomPromptsAccess,
49423
+ checkDualLlmAccess: () => checkDualLlmAccess,
49424
+ checkGenerationAccess: () => checkGenerationAccess,
49418
49425
  checkLimit: () => checkLimit,
49419
49426
  checkPreseedAccess: () => checkPreseedAccess,
49420
49427
  checkSeedAccess: () => checkSeedAccess,
@@ -49458,11 +49465,12 @@ Installing to ${target.name}...`);
49458
49465
  custom: 3
49459
49466
  };
49460
49467
  var DEFAULT_LIMITS = {
49461
- free: { projects: 1, apiCallsPerMonth: 500, devices: 1, teamSeats: 1, storage: "100MB" },
49462
- founder: { projects: 5, apiCallsPerMonth: 1e4, devices: 3, teamSeats: 1, storage: "5GB" },
49463
- pro: { projects: 5, apiCallsPerMonth: 1e4, devices: 3, teamSeats: 1, storage: "5GB" },
49464
- team: { projects: 20, apiCallsPerMonth: 5e4, devices: 10, teamSeats: 5, storage: "50GB" },
49465
- enterprise: { projects: 100, apiCallsPerMonth: 5e5, devices: 50, teamSeats: 20, storage: "500GB" },
49468
+ free: { projects: 1, apiCallsPerMonth: 100, devices: 1, teamSeats: 1, storage: "50MB" },
49469
+ // one-time trial credits, not recurring
49470
+ founder: { projects: 5, apiCallsPerMonth: 5e3, devices: 1, teamSeats: 1, storage: "2GB" },
49471
+ pro: { projects: 5, apiCallsPerMonth: 5e3, devices: 1, teamSeats: 1, storage: "2GB" },
49472
+ team: { projects: 15, apiCallsPerMonth: 25e3, devices: 2, teamSeats: 3, storage: "25GB" },
49473
+ enterprise: { projects: 50, apiCallsPerMonth: 1e5, devices: 5, teamSeats: 10, storage: "250GB" },
49466
49474
  custom: { projects: 999, apiCallsPerMonth: 999999, devices: 999, teamSeats: 999, storage: "1TB" }
49467
49475
  };
49468
49476
  var FEATURE_GATES = {
@@ -49521,6 +49529,7 @@ Installing to ${target.name}...`);
49521
49529
  "priority_support",
49522
49530
  "team_features",
49523
49531
  "presence",
49532
+ "custom_policies",
49524
49533
  "preseed.*",
49525
49534
  "seed.*"
49526
49535
  ],
@@ -49556,18 +49565,28 @@ Installing to ${target.name}...`);
49556
49565
  var PRESEED_PAID_COMMANDS = ["pull", "push", "workflow", "merge", "start"];
49557
49566
  var SEED_PAID_COMMANDS = ["scaffold", "synthesize", "generate"];
49558
49567
  var AGENT_TIERS = {
49568
+ // Business agents — Pro tier
49559
49569
  "business-strategy-expert": "pro",
49560
49570
  "competitive-analysis-expert": "pro",
49561
49571
  "financial-expert": "pro",
49572
+ "fundraising-expert": "pro",
49562
49573
  "growth-expert": "pro",
49574
+ "investor-relations-expert": "pro",
49563
49575
  "legal-expert": "pro",
49564
49576
  "operations-expert": "pro",
49577
+ "partnerships-expert": "pro",
49578
+ "private-equity-expert": "pro",
49565
49579
  "sales-expert": "pro",
49566
- "fundraising-expert": "team",
49567
- "investor-relations-expert": "team",
49568
- "partnerships-expert": "team",
49569
- "private-equity-expert": "team"
49570
- };
49580
+ // Design agent — Pro tier
49581
+ "ui-ux-expert": "pro",
49582
+ "content-expert": "pro",
49583
+ "marketing-expert": "pro",
49584
+ "product-expert": "pro"
49585
+ };
49586
+ var FREE_AGENTS = /* @__PURE__ */ new Set([
49587
+ "database-expert",
49588
+ "frontend-expert"
49589
+ ]);
49571
49590
  var PREMIUM_SKILL_CATEGORIES = [
49572
49591
  "ai",
49573
49592
  "payments",
@@ -49593,6 +49612,16 @@ Installing to ${target.name}...`);
49593
49612
  "ui/command-palette",
49594
49613
  "ui/data-tables"
49595
49614
  ];
49615
+ var GENERATION_LIMITS = {
49616
+ free: 0,
49617
+ founder: 25,
49618
+ pro: 25,
49619
+ team: 100,
49620
+ enterprise: 500,
49621
+ custom: 999999
49622
+ };
49623
+ var CUSTOM_PROMPTS_TIERS = /* @__PURE__ */ new Set(["enterprise", "custom"]);
49624
+ var DUAL_LLM_TIERS = /* @__PURE__ */ new Set(["enterprise", "custom"]);
49596
49625
  var FREE_SKILL_OVERRIDES = ["security/validation", "deployment/docker"];
49597
49626
  var UPGRADE_URL = "https://bootspring.com/pricing";
49598
49627
  var FEATURE_COPY = {
@@ -49714,8 +49743,14 @@ Installing to ${target.name}...`);
49714
49743
  return getTierLevel(user) >= getTierLevel(requiredTier);
49715
49744
  }
49716
49745
  function checkAgentAccess(agentId) {
49717
- const requiredTier = AGENT_TIERS[agentId];
49718
49746
  const userTier = getTier2();
49747
+ if (getTierLevel(userTier) === 0) {
49748
+ if (!FREE_AGENTS.has(agentId)) {
49749
+ return { allowed: false, requiredTier: "pro", userTier };
49750
+ }
49751
+ return { allowed: true, userTier };
49752
+ }
49753
+ const requiredTier = AGENT_TIERS[agentId];
49719
49754
  if (!requiredTier) {
49720
49755
  return { allowed: true, userTier };
49721
49756
  }
@@ -49986,6 +50021,17 @@ ${experimentLine}
49986
50021
  throw error;
49987
50022
  }
49988
50023
  }
50024
+ function checkGenerationAccess() {
50025
+ const tier = getTier2();
50026
+ const limit = GENERATION_LIMITS[tier] ?? 0;
50027
+ return { allowed: limit > 0, limit, tier };
50028
+ }
50029
+ function checkCustomPromptsAccess() {
50030
+ return CUSTOM_PROMPTS_TIERS.has(getTier2());
50031
+ }
50032
+ function checkDualLlmAccess() {
50033
+ return DUAL_LLM_TIERS.has(getTier2());
50034
+ }
49989
50035
  var entitlements_exports = {};
49990
50036
  __export2(entitlements_exports, {
49991
50037
  LOCAL_MODE: () => LOCAL_MODE,
@@ -51888,7 +51934,7 @@ var require_package = __commonJS({
51888
51934
  "../../../package.json"(exports2, module2) {
51889
51935
  module2.exports = {
51890
51936
  name: "bootspring-workspace",
51891
- version: "2.5.0",
51937
+ version: "2.5.1",
51892
51938
  private: true,
51893
51939
  description: "Workspace tooling for the Bootspring monorepo",
51894
51940
  keywords: [
@@ -51908,6 +51954,9 @@ var require_package = __commonJS({
51908
51954
  type: "git",
51909
51955
  url: "git+https://github.com/Girard-Media/bootspring.git"
51910
51956
  },
51957
+ bin: {
51958
+ bootspring: "./monorepo/apps/cli/bin/bootspring.js"
51959
+ },
51911
51960
  homepage: "https://bootspring.com",
51912
51961
  bugs: {
51913
51962
  url: "https://github.com/Girard-Media/bootspring/issues"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@girardmedia/bootspring",
3
- "version": "2.5.1",
3
+ "version": "2.5.2",
4
4
  "description": "Thin client for Bootspring cloud MCP, hosted agents, and paywalled workflow intelligence",
5
5
  "keywords": [
6
6
  "ai",