@buildbase/sdk 0.0.51 → 0.0.53

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 (50) hide show
  1. package/AGENTS.md +18 -8
  2. package/CHANGELOG.md +56 -0
  3. package/README.md +247 -32
  4. package/dist/css/styles.css +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.d.ts +865 -53
  7. package/dist/index.mjs +1 -1
  8. package/dist/mcp/index.cjs +1 -0
  9. package/dist/mcp/index.d.ts +1402 -0
  10. package/dist/mcp/index.mjs +1 -0
  11. package/dist/react/chunks/{SettingsDialog-uVKFxlal.mjs → SettingsDialog-BxDYsie6.mjs} +1 -1
  12. package/dist/react/chunks/{SettingsDialog-DitAiAqr.cjs → SettingsDialog-Dy8W3NA6.cjs} +1 -1
  13. package/dist/react/chunks/{SubscriptionDialog-P0GlXEyn.mjs → SubscriptionDialog-6c5dHoQd.mjs} +1 -1
  14. package/dist/react/chunks/{SubscriptionDialog-Cg-qYVKr.cjs → SubscriptionDialog-CpVnnXJg.cjs} +1 -1
  15. package/dist/react/chunks/ar-1Z1MOGAP.mjs +2 -0
  16. package/dist/react/chunks/ar-VGzBv3AZ.cjs +2 -0
  17. package/dist/react/chunks/de-BjdDg60Y.cjs +2 -0
  18. package/dist/react/chunks/de-CXUItplO.mjs +2 -0
  19. package/dist/react/chunks/es-BBPsSZUp.cjs +2 -0
  20. package/dist/react/chunks/es-BTbzVutz.mjs +2 -0
  21. package/dist/react/chunks/fr-Cax48X_S.cjs +2 -0
  22. package/dist/react/chunks/fr-DPMeOQu3.mjs +2 -0
  23. package/dist/react/chunks/hi-BJqvpG6d.cjs +2 -0
  24. package/dist/react/chunks/hi-JfJx-LV7.mjs +2 -0
  25. package/dist/react/chunks/ja-CDGtLzTk.mjs +2 -0
  26. package/dist/react/chunks/ja-DvVyj5xX.cjs +2 -0
  27. package/dist/react/chunks/react-4SlWxHdh.cjs +2 -0
  28. package/dist/react/chunks/react-OL1uSkpr.mjs +2 -0
  29. package/dist/react/chunks/zh-BAcqxkxk.cjs +2 -0
  30. package/dist/react/chunks/zh-BNZ2Ooe8.mjs +2 -0
  31. package/dist/react/index.cjs +1 -1
  32. package/dist/react/index.d.ts +39 -32
  33. package/dist/react/index.mjs +1 -1
  34. package/package.json +17 -4
  35. package/dist/react/chunks/ar-SrPOJXdL.mjs +0 -2
  36. package/dist/react/chunks/ar-a3aRbPCs.cjs +0 -2
  37. package/dist/react/chunks/de-DE3_z7r0.cjs +0 -2
  38. package/dist/react/chunks/de-xnPl61SS.mjs +0 -2
  39. package/dist/react/chunks/es-C_xcyGtp.cjs +0 -2
  40. package/dist/react/chunks/es-CyuBtosP.mjs +0 -2
  41. package/dist/react/chunks/fr-BMu7Bk4k.cjs +0 -2
  42. package/dist/react/chunks/fr-CxuDLZ27.mjs +0 -2
  43. package/dist/react/chunks/hi-CQ215yc9.cjs +0 -2
  44. package/dist/react/chunks/hi-CpuvyorS.mjs +0 -2
  45. package/dist/react/chunks/ja-DIJ_xCIi.mjs +0 -2
  46. package/dist/react/chunks/ja-DK6Buuws.cjs +0 -2
  47. package/dist/react/chunks/react-C2ikFWBG.cjs +0 -2
  48. package/dist/react/chunks/react-CCukNQ4q.mjs +0 -2
  49. package/dist/react/chunks/zh-CYQwZiBL.mjs +0 -2
  50. package/dist/react/chunks/zh-Dt-apS2s.cjs +0 -2
package/dist/index.d.ts CHANGED
@@ -2186,8 +2186,9 @@ interface PermissionContext {
2186
2186
  * 3. settings.workspace.permissions[role] (org-level template)
2187
2187
  * 4. DEFAULT_ROLE_PERMISSIONS[role] (SDK built-in defaults)
2188
2188
  * 5. Merge in appPermissions (developer-defined) for the role
2189
- * 6. If role not found → use defaultRole from settings, then 'member'
2190
- * 7. Apply setting restrictions (canInviteMembers, canCreateWorkspace)
2189
+ * 6. If role not found → use an explicitly-configured, known `defaultRole`;
2190
+ * otherwise deny (no silent 'member' fallback for unknown roles)
2191
+ * 7. Apply setting restrictions (canInviteMembers)
2191
2192
  */
2192
2193
  declare function resolvePermissions(ctx: PermissionContext): Set<string>;
2193
2194
  /**
@@ -2222,6 +2223,652 @@ interface BetaFormResponse {
2222
2223
  message: string;
2223
2224
  }
2224
2225
 
2226
+ /**
2227
+ * Type-safe translation keys for the BuildBase SDK.
2228
+ * All user-facing strings are defined here.
2229
+ */
2230
+ interface SDKMessages {
2231
+ security: {
2232
+ connectedAgentsTitle: string;
2233
+ connectedAgentsDescription: string;
2234
+ connectedAgentsDisconnect: string;
2235
+ connectedAgentsEmpty: string;
2236
+ connectedAgentsAccess: string;
2237
+ connectedAgentsGranted: string;
2238
+ inactive: string;
2239
+ inactiveHint: string;
2240
+ passkeysTitle: string;
2241
+ passkeysDescription: string;
2242
+ noPasskeys: string;
2243
+ addHint: string;
2244
+ rename: string;
2245
+ remove: string;
2246
+ removeTitle: string;
2247
+ removeDescription: string;
2248
+ renamePlaceholder: string;
2249
+ lastUsed: string;
2250
+ added: string;
2251
+ };
2252
+ settings: {
2253
+ titles: {
2254
+ profile: string;
2255
+ security: string;
2256
+ general: string;
2257
+ users: string;
2258
+ subscription: string;
2259
+ usage: string;
2260
+ credits: string;
2261
+ features: string;
2262
+ notifications: string;
2263
+ permissions: string;
2264
+ danger: string;
2265
+ };
2266
+ sidebar: {
2267
+ account: string;
2268
+ workspace: string;
2269
+ profile: string;
2270
+ security: string;
2271
+ general: string;
2272
+ users: string;
2273
+ subscription: string;
2274
+ usage: string;
2275
+ credits: string;
2276
+ features: string;
2277
+ notifications: string;
2278
+ permissions: string;
2279
+ danger: string;
2280
+ };
2281
+ common: {
2282
+ refresh: string;
2283
+ refreshing: string;
2284
+ retry: string;
2285
+ retrying: string;
2286
+ save: string;
2287
+ saving: string;
2288
+ cancel: string;
2289
+ delete: string;
2290
+ dismiss: string;
2291
+ loading: string;
2292
+ success: string;
2293
+ error: string;
2294
+ refreshAction: string;
2295
+ retryAction: string;
2296
+ noPermissionTitle: string;
2297
+ noPermissionDescription: string;
2298
+ billingManageOnly: string;
2299
+ openSettings: string;
2300
+ back: string;
2301
+ };
2302
+ };
2303
+ subscription: {
2304
+ managePlan: string;
2305
+ changePlan: string;
2306
+ viewPricingPlans: string;
2307
+ viewPlans: string;
2308
+ upgradePlan: string;
2309
+ subscribe: string;
2310
+ currentPlan: string;
2311
+ noSubscription: string;
2312
+ choosePlan: string;
2313
+ choosePlanDescription: string;
2314
+ forWorkspace: string;
2315
+ planUpdateAvailable: string;
2316
+ updateSuccess: string;
2317
+ updateFailed: string;
2318
+ cancelTitle: string;
2319
+ cancelConfirm: string;
2320
+ cancelKeep: string;
2321
+ cancelButton: string;
2322
+ canceling: string;
2323
+ cancelSuccess: string;
2324
+ cancelNotCharged: string;
2325
+ cancelResumeAnytime: string;
2326
+ cancelTrialTitle: string;
2327
+ cancelTrialConfirm: string;
2328
+ cancelTrialAccess: string;
2329
+ cancelTrialNoCharge: string;
2330
+ cancelTrialResume: string;
2331
+ cancelTrialKeep: string;
2332
+ cancelTrialButton: string;
2333
+ resumeTitle: string;
2334
+ resumeTrial: string;
2335
+ resumeConfirm: string;
2336
+ resumeKeep: string;
2337
+ resumeButton: string;
2338
+ resuming: string;
2339
+ resumeSuccess: string;
2340
+ managePayment: string;
2341
+ openingPortal: string;
2342
+ viewAllPlans: string;
2343
+ scheduledCancellation: string;
2344
+ scheduledTrialCancellation: string;
2345
+ paymentPastDue: string;
2346
+ paymentPastDueDescription: string;
2347
+ subscriptionPaused: string;
2348
+ subscriptionPausedDescription: string;
2349
+ errorLoading: string;
2350
+ errorLoadingDescription: string;
2351
+ errorProcessing: string;
2352
+ errorCanceling: string;
2353
+ errorResuming: string;
2354
+ invalidWorkspace: string;
2355
+ billingInterval: {
2356
+ monthly: string;
2357
+ quarterly: string;
2358
+ yearly: string;
2359
+ perMonth: string;
2360
+ perQuarter: string;
2361
+ perYear: string;
2362
+ };
2363
+ seats: {
2364
+ title: string;
2365
+ members: string;
2366
+ included: string;
2367
+ billable: string;
2368
+ perExtraSeat: string;
2369
+ limit: string;
2370
+ includedSeats: string;
2371
+ maxSeats: string;
2372
+ freeWithBase: string;
2373
+ allIncluded: string;
2374
+ extra: string;
2375
+ unlimited: string;
2376
+ };
2377
+ items: {
2378
+ features: string;
2379
+ limits: string;
2380
+ quotas: string;
2381
+ credits: string;
2382
+ creditsPerMonth: string;
2383
+ creditsOneTime: string;
2384
+ creditRenewal: string;
2385
+ creditModeReset: string;
2386
+ creditModeTopup: string;
2387
+ creditModeLifetime: string;
2388
+ /** @deprecated */
2389
+ creditsPerPeriod: string;
2390
+ /** @deprecated */
2391
+ creditRollover: string;
2392
+ };
2393
+ checkout: {
2394
+ upgrade: string;
2395
+ downgrade: string;
2396
+ switchTo: string;
2397
+ select: string;
2398
+ };
2399
+ status: {
2400
+ active: string;
2401
+ canceling: string;
2402
+ trial: string;
2403
+ canceled: string;
2404
+ pastDue: string;
2405
+ paused: string;
2406
+ deprecated: string;
2407
+ unknown: string;
2408
+ };
2409
+ plan: string;
2410
+ invoicesTab: string;
2411
+ tabsLabel: string;
2412
+ endsOn: string;
2413
+ versionLabel: string;
2414
+ changePlanButton: string;
2415
+ noPlanAssigned: string;
2416
+ free: string;
2417
+ perSeatDisplay: string;
2418
+ estTotalDisplay: string;
2419
+ nextBillingDisplay: string;
2420
+ membersInWorkspace: string;
2421
+ billingInCurrency: string;
2422
+ savingsPercent: string;
2423
+ switchToInterval: string;
2424
+ seatPriceDisplay: string;
2425
+ trialEnded: string;
2426
+ trialEndsIn: string;
2427
+ onTrial: string;
2428
+ upgradeToKeepAccess: string;
2429
+ viewInvoices: string;
2430
+ cancelTrial: string;
2431
+ dunningFinal: string;
2432
+ dunningSuspended: string;
2433
+ dunningRecovery: string;
2434
+ dunningSuspendedDescription: string;
2435
+ dunningRecoveryDescription: string;
2436
+ cancelEndDescription: string;
2437
+ trialEndDescription: string;
2438
+ cancelEndFallback: string;
2439
+ resumeChargeDate: string;
2440
+ resumeChargeFallback: string;
2441
+ resumeContinue: string;
2442
+ resumeCancelAnytime: string;
2443
+ retainAccess: string;
2444
+ retainAccessFallback: string;
2445
+ noPlansAvailable: string;
2446
+ noPlansAvailableHint: string;
2447
+ startTrialDescription: string;
2448
+ noSubscriptionDescription: string;
2449
+ startFreeTrial: string;
2450
+ startTrialDays: string;
2451
+ trialBadge: string;
2452
+ };
2453
+ users: {
2454
+ emailPlaceholder: string;
2455
+ title: string;
2456
+ adminOnly: string;
2457
+ inviteByEmail: string;
2458
+ inviteButton: string;
2459
+ inviting: string;
2460
+ inviteSuccess: string;
2461
+ emailRequired: string;
2462
+ invalidEmail: string;
2463
+ inviteFailed: string;
2464
+ seatLimitReached: string;
2465
+ memberLimitReached: string;
2466
+ role: string;
2467
+ you: string;
2468
+ owner: string;
2469
+ noMembers: string;
2470
+ extraSeatCost: string;
2471
+ unknownUser: string;
2472
+ seats: string;
2473
+ members: string;
2474
+ included: string;
2475
+ perExtraSeat: string;
2476
+ maxMembers: string;
2477
+ available: string;
2478
+ noMemberLimit: string;
2479
+ seatHeading: string;
2480
+ limitReached: string;
2481
+ memberCount: string;
2482
+ subscriptionRequired: string;
2483
+ seatLimitMessage: string;
2484
+ settingsLimitMessage: string;
2485
+ memberLimitMessage: string;
2486
+ selectRole: string;
2487
+ inviteAs: string;
2488
+ };
2489
+ invoices: {
2490
+ title: string;
2491
+ description: string;
2492
+ pay: string;
2493
+ view: string;
2494
+ viewDetails: string;
2495
+ download: string;
2496
+ errorLoading: string;
2497
+ noInvoices: string;
2498
+ noInvoicesWithSub: string;
2499
+ paidAmount: string;
2500
+ na: string;
2501
+ status: {
2502
+ draft: string;
2503
+ open: string;
2504
+ paid: string;
2505
+ uncollectible: string;
2506
+ void: string;
2507
+ };
2508
+ };
2509
+ usage: {
2510
+ title: string;
2511
+ description: string;
2512
+ totalResources: string;
2513
+ overallUsage: string;
2514
+ inOverage: string;
2515
+ estOverageCost: string;
2516
+ overageDetected: string;
2517
+ overageDescription: string;
2518
+ overageUnits: string;
2519
+ rate: string;
2520
+ billableBlocks: string;
2521
+ estimatedCharge: string;
2522
+ noData: string;
2523
+ noDataHint: string;
2524
+ used: string;
2525
+ remaining: string;
2526
+ overLimit: string;
2527
+ percentUsed: string;
2528
+ availableRemaining: string;
2529
+ overLimitCount: string;
2530
+ overageWarning: string;
2531
+ fullyUsed: string;
2532
+ renewingSoon: string;
2533
+ almostFull: string;
2534
+ overage: string;
2535
+ errorLoading: string;
2536
+ perUnit: string;
2537
+ perUnits: string;
2538
+ rateDisplay: string;
2539
+ resourcesExceeded: string;
2540
+ estOverageCharges: string;
2541
+ overageRateDisplay: string;
2542
+ resetDateDisplay: string;
2543
+ daysRemainingDisplay: string;
2544
+ };
2545
+ profile: {
2546
+ email: string;
2547
+ name: string;
2548
+ language: string;
2549
+ country: string;
2550
+ currency: string;
2551
+ timezone: string;
2552
+ profileImage: string;
2553
+ success: string;
2554
+ nameMinLength: string;
2555
+ save: string;
2556
+ reset: string;
2557
+ };
2558
+ general: {
2559
+ ownerOnly: string;
2560
+ name: string;
2561
+ namePlaceholder: string;
2562
+ nameMinLength: string;
2563
+ billingCurrency: string;
2564
+ icon: string;
2565
+ iconDescription: string;
2566
+ imageUrl: string;
2567
+ imageUrlPlaceholder: string;
2568
+ imageUrlDescription: string;
2569
+ previewLabel: string;
2570
+ previewImageAlt: string;
2571
+ success: string;
2572
+ chooseEmoji: string;
2573
+ customImageUrl: string;
2574
+ updateWorkspace: string;
2575
+ };
2576
+ features: {
2577
+ title: string;
2578
+ ownerOnly: string;
2579
+ noFeatures: string;
2580
+ enabled: string;
2581
+ disabled: string;
2582
+ enabling: string;
2583
+ disabling: string;
2584
+ featureSuccess: string;
2585
+ updateSuccess: string;
2586
+ actionStatus: string;
2587
+ };
2588
+ danger: {
2589
+ title: string;
2590
+ adminOnly: string;
2591
+ deleteWorkspace: string;
2592
+ deleteConfirm: string;
2593
+ deleteWarning: string;
2594
+ deleting: string;
2595
+ deleteDescription: string;
2596
+ deleteConfirmDescription: string;
2597
+ failedToDelete: string;
2598
+ };
2599
+ notifications: {
2600
+ title: string;
2601
+ permissionDenied: string;
2602
+ notSupported: string;
2603
+ manageDescription: string;
2604
+ blocked: string;
2605
+ blockedDescription: string;
2606
+ pushTitle: string;
2607
+ pushEnabledDescription: string;
2608
+ pushDisabledDescription: string;
2609
+ enabling: string;
2610
+ disabling: string;
2611
+ enable: string;
2612
+ disable: string;
2613
+ toggleAction: string;
2614
+ pushDescription: string;
2615
+ deviceNote: string;
2616
+ prefsSaved: string;
2617
+ loadingPrefs: string;
2618
+ categories: {
2619
+ workspace: string;
2620
+ billing: string;
2621
+ };
2622
+ events: {
2623
+ workspace_invite: string;
2624
+ workspace_invite_desc: string;
2625
+ workspace_removed: string;
2626
+ workspace_removed_desc: string;
2627
+ workspace_role_changed: string;
2628
+ workspace_role_changed_desc: string;
2629
+ subscription_created: string;
2630
+ subscription_created_desc: string;
2631
+ subscription_upgraded: string;
2632
+ subscription_upgraded_desc: string;
2633
+ subscription_canceled: string;
2634
+ subscription_canceled_desc: string;
2635
+ subscription_suspended: string;
2636
+ subscription_suspended_desc: string;
2637
+ trial_ending: string;
2638
+ trial_ending_desc: string;
2639
+ trial_expired: string;
2640
+ trial_expired_desc: string;
2641
+ payment_failed: string;
2642
+ payment_failed_desc: string;
2643
+ payment_action_required: string;
2644
+ payment_action_required_desc: string;
2645
+ payment_succeeded: string;
2646
+ payment_succeeded_desc: string;
2647
+ };
2648
+ unblock: {
2649
+ firefox: {
2650
+ step1: string;
2651
+ step2: string;
2652
+ step3: string;
2653
+ step4: string;
2654
+ };
2655
+ safari: {
2656
+ step1: string;
2657
+ step2: string;
2658
+ step3: string;
2659
+ step4: string;
2660
+ };
2661
+ edge: {
2662
+ step1: string;
2663
+ step2: string;
2664
+ step3: string;
2665
+ step4: string;
2666
+ };
2667
+ chrome: {
2668
+ step1: string;
2669
+ step2: string;
2670
+ step3: string;
2671
+ step4: string;
2672
+ };
2673
+ };
2674
+ };
2675
+ quota: {
2676
+ includedOnly: string;
2677
+ includedWithOverage: string;
2678
+ includedHardLimit: string;
2679
+ unitFallback: string;
2680
+ };
2681
+ pricing: {
2682
+ title: string;
2683
+ description: string;
2684
+ currency: string;
2685
+ billingIn: string;
2686
+ noPlansCurrency: string;
2687
+ noPlansCurrencyHint: string;
2688
+ noPlans: string;
2689
+ free: string;
2690
+ included: string;
2691
+ save: string;
2692
+ current: string;
2693
+ processing: string;
2694
+ unavailable: string;
2695
+ selectCurrency: string;
2696
+ billingInterval: string;
2697
+ };
2698
+ beta: {
2699
+ logoAlt: string;
2700
+ nameLabel: string;
2701
+ emailLabel: string;
2702
+ submitText: string;
2703
+ submittingText: string;
2704
+ errorMessage: string;
2705
+ tryAgain: string;
2706
+ privacyConsent: string;
2707
+ privacyPolicy: string;
2708
+ and: string;
2709
+ termsOfService: string;
2710
+ };
2711
+ workspace: {
2712
+ switchTitle: string;
2713
+ switchDescription: string;
2714
+ notLoggedIn: string;
2715
+ availableWorkspaces: string;
2716
+ loadingWorkspaces: string;
2717
+ searchPlaceholder: string;
2718
+ noWorkspacesFound: string;
2719
+ noWorkspacesAvailable: string;
2720
+ switchTo: string;
2721
+ membersCount: string;
2722
+ createNew: string;
2723
+ createTitle: string;
2724
+ createDescription: string;
2725
+ workspaceName: string;
2726
+ workspaceNamePlaceholder: string;
2727
+ workspaceNameMinLength: string;
2728
+ workspaceIcon: string;
2729
+ iconDescription: string;
2730
+ chooseEmoji: string;
2731
+ customImageUrl: string;
2732
+ imageUrl: string;
2733
+ imageUrlPlaceholder: string;
2734
+ imageUrlDescription: string;
2735
+ invalidUrl: string;
2736
+ creating: string;
2737
+ createWorkspace: string;
2738
+ };
2739
+ dropdowns: {
2740
+ search: string;
2741
+ chooseOption: string;
2742
+ chooseCountry: string;
2743
+ searchCountry: string;
2744
+ chooseLanguage: string;
2745
+ searchLanguage: string;
2746
+ chooseCurrency: string;
2747
+ searchCurrency: string;
2748
+ chooseTimezone: string;
2749
+ searchTimezone: string;
2750
+ noResults: string;
2751
+ };
2752
+ push: {
2753
+ failedToSubscribe: string;
2754
+ failedToUnsubscribe: string;
2755
+ };
2756
+ permissions: {
2757
+ title: string;
2758
+ description: string;
2759
+ ownerOnly: string;
2760
+ save: string;
2761
+ saving: string;
2762
+ saveSuccess: string;
2763
+ };
2764
+ credits: {
2765
+ title: string;
2766
+ description: string;
2767
+ balance: string;
2768
+ available: string;
2769
+ totalGranted: string;
2770
+ totalConsumed: string;
2771
+ totalExpired: string;
2772
+ noCredits: string;
2773
+ noCreditsHint: string;
2774
+ buyCredits: string;
2775
+ buyAmount: string;
2776
+ purchasing: string;
2777
+ packages: string;
2778
+ noPackages: string;
2779
+ creditsAmount: string;
2780
+ validityDays: string;
2781
+ validityUnlimited: string;
2782
+ transactions: string;
2783
+ noTransactions: string;
2784
+ loadMore: string;
2785
+ viewAll: string;
2786
+ expiringSoon: string;
2787
+ expiringInDays: string;
2788
+ noExpiring: string;
2789
+ type: {
2790
+ plan_grant: string;
2791
+ pack_purchased: string;
2792
+ consumed: string;
2793
+ expired: string;
2794
+ admin_grant: string;
2795
+ admin_revoke: string;
2796
+ refund: string;
2797
+ };
2798
+ dialogTitle: string;
2799
+ dialogDescription: string;
2800
+ dialogDescriptionWorkspace: string;
2801
+ perCredit: string;
2802
+ purchaseSuccess: string;
2803
+ purchaseCanceled: string;
2804
+ purchaseFailed: string;
2805
+ errorLoading: string;
2806
+ insufficientCredits: string;
2807
+ };
2808
+ loading: {
2809
+ restoringSession: string;
2810
+ redirecting: string;
2811
+ signingIn: string;
2812
+ verifyingAccount: string;
2813
+ almostThere: string;
2814
+ };
2815
+ errors: {
2816
+ networkError: string;
2817
+ unauthorized: string;
2818
+ notFound: string;
2819
+ generic: string;
2820
+ fetchPlans: string;
2821
+ fetchPlanGroup: string;
2822
+ fetchPlanGroupVersion: string;
2823
+ fetchPlanGroupVersions: string;
2824
+ fetchSubscription: string;
2825
+ createCheckout: string;
2826
+ updateSubscription: string;
2827
+ fetchInvoices: string;
2828
+ fetchInvoice: string;
2829
+ openBillingPortal: string;
2830
+ cancelSubscription: string;
2831
+ resumeSubscription: string;
2832
+ recordUsage: string;
2833
+ fetchQuotaUsage: string;
2834
+ fetchAllQuotaUsage: string;
2835
+ fetchUsageLogs: string;
2836
+ fetchCreditBalance: string;
2837
+ consumeCredits: string;
2838
+ purchaseCredits: string;
2839
+ fetchCreditPackages: string;
2840
+ fetchCreditTransactions: string;
2841
+ fetchExpiringCredits: string;
2842
+ };
2843
+ }
2844
+ /**
2845
+ * Generates a union of all valid dot-separated key paths from SDKMessages.
2846
+ * Supports up to 4 levels of nesting (covers all current keys, e.g.
2847
+ * "notifications.unblock.firefox.step1").
2848
+ * Used to make `t()` calls compile-time safe with autocomplete.
2849
+ *
2850
+ * @example
2851
+ * TranslationKey → "settings.titles.profile" | "settings.common.refresh" | ...
2852
+ */
2853
+ type Level1 = keyof SDKMessages & string;
2854
+ type Level2 = {
2855
+ [K1 in Level1]: SDKMessages[K1] extends Record<string, unknown> ? `${K1}.${keyof SDKMessages[K1] & string}` : never;
2856
+ }[Level1];
2857
+ type Level3 = {
2858
+ [K1 in Level1]: SDKMessages[K1] extends Record<string, unknown> ? {
2859
+ [K2 in keyof SDKMessages[K1] & string]: SDKMessages[K1][K2] extends Record<string, unknown> ? `${K1}.${K2}.${keyof SDKMessages[K1][K2] & string}` : never;
2860
+ }[keyof SDKMessages[K1] & string] : never;
2861
+ }[Level1];
2862
+ type Level4 = {
2863
+ [K1 in Level1]: SDKMessages[K1] extends Record<string, unknown> ? {
2864
+ [K2 in keyof SDKMessages[K1] & string]: SDKMessages[K1][K2] extends Record<string, unknown> ? {
2865
+ [K3 in keyof SDKMessages[K1][K2] & string]: SDKMessages[K1][K2][K3] extends Record<string, unknown> ? `${K1}.${K2}.${K3}.${keyof SDKMessages[K1][K2][K3] & string}` : never;
2866
+ }[keyof SDKMessages[K1][K2] & string] : never;
2867
+ }[keyof SDKMessages[K1] & string] : never;
2868
+ }[Level1];
2869
+ /** Union of all valid translation key paths (e.g. "settings.titles.profile") */
2870
+ type TranslationKey = Level2 | Level3 | Level4;
2871
+
2225
2872
  /**
2226
2873
  * Verify that a webhook request came from BuildBase.
2227
2874
  *
@@ -2332,34 +2979,31 @@ declare function parseWebhookEvent(options: {
2332
2979
  * @example Next.js App Router — the entire integration:
2333
2980
  * ```ts
2334
2981
  * // lib/agent-ready.ts
2335
- * import type { AgentReadyConfig } from "@buildbase/sdk";
2982
+ * import { resolveAgentPath, type AgentReadyConfig } from "@buildbase/sdk";
2336
2983
  * export const agentConfig: AgentReadyConfig = {
2337
2984
  * serverUrl: process.env.BUILDBASE_URL!,
2338
2985
  * orgId: process.env.BUILDBASE_ORG_ID!,
2339
2986
  * siteUrl: "https://imejis.io",
2340
2987
  * site: { name: "Imejis", description: "Generate images from templates via API." },
2988
+ * robots: { contentSignals: { search: true, aiInput: true, aiTrain: false } },
2341
2989
  * };
2342
- *
2343
- * // app/.well-known/[...path]/route.ts
2344
- * import { resolveWellKnown } from "@buildbase/sdk";
2345
- * import { agentConfig } from "@/lib/agent-ready";
2346
- * export async function GET(req: Request) {
2347
- * const doc = await resolveWellKnown(new URL(req.url).pathname, agentConfig);
2990
+ * export async function serveAgentPath(req: Request): Promise<Response> {
2991
+ * const doc = await resolveAgentPath(new URL(req.url).pathname, agentConfig);
2348
2992
  * if (!doc) return new Response('{"error":"not_found"}', { status: 404 });
2349
2993
  * return new Response(doc.body, {
2350
2994
  * status: doc.status,
2351
- * headers: { "Content-Type": doc.contentType, "Cache-Control": doc.cacheControl },
2995
+ * headers: {
2996
+ * "Content-Type": doc.contentType,
2997
+ * "Cache-Control": doc.cacheControl,
2998
+ * ...(doc.vary ? { Vary: doc.vary } : {}),
2999
+ * },
2352
3000
  * });
2353
3001
  * }
2354
3002
  *
2355
- * // app/llms.txt/route.ts
2356
- * import { buildLlmsTxt, fetchAgentReadiness } from "@buildbase/sdk";
2357
- * import { agentConfig } from "@/lib/agent-ready";
2358
- * export async function GET() {
2359
- * const doc = buildLlmsTxt(agentConfig, await fetchAgentReadiness(agentConfig));
2360
- * if (!doc) return new Response("Not found", { status: 404 });
2361
- * return new Response(doc.body, { headers: { "Content-Type": doc.contentType } });
2362
- * }
3003
+ * // app/.well-known/[...path]/route.ts — plus identical two-liners at
3004
+ * // app/robots.txt/route.ts, app/llms.txt/route.ts, app/auth.md/route.ts, …
3005
+ * import { serveAgentPath } from "@/lib/agent-ready";
3006
+ * export const GET = serveAgentPath;
2363
3007
  * ```
2364
3008
  */
2365
3009
  /**
@@ -2370,21 +3014,16 @@ declare function parseWebhookEvent(options: {
2370
3014
  interface AgentReadinessBundle {
2371
3015
  /** False when the org has not enabled agent readiness — everything else absent. */
2372
3016
  enabled: boolean;
2373
- /** Pointer to the org's RFC 8414 authorization-server metadata. */
3017
+ /**
3018
+ * Pointer to the org's RFC 8414 authorization-server metadata. This is the
3019
+ * ONLY thing the platform owns and serves — discovery content (protected
3020
+ * resources, llms.txt, sitemap, API catalog, skills) is app-owned and
3021
+ * defined locally in {@link AgentReadyConfig}.
3022
+ */
2374
3023
  authorizationServer?: {
2375
3024
  issuer: string;
2376
3025
  metadataUrl: string;
2377
3026
  };
2378
- /**
2379
- * RFC 9728 protected-resource metadata objects, ready to serve. Each `metadata`
2380
- * is a complete document; `resource` is the canonical resource URI it describes.
2381
- */
2382
- protectedResources?: Array<{
2383
- resource: string;
2384
- metadata: Record<string, unknown>;
2385
- }>;
2386
- /** Org-authored llms.txt content, or null when unset. */
2387
- llmsTxt?: string | null;
2388
3027
  }
2389
3028
  /** An Agent Skill (Agent Skills Discovery RFC v0.2.0) published by this app. */
2390
3029
  interface AgentSkill {
@@ -2432,6 +3071,59 @@ interface McpServerCard {
2432
3071
  /** Documentation URL. */
2433
3072
  documentationUrl?: string;
2434
3073
  }
3074
+ /** One robots.txt policy group (a `User-agent:` block). */
3075
+ interface RobotsPolicy {
3076
+ /** User-agent(s) this group applies to, e.g. `'*'` or `'GPTBot'`. */
3077
+ userAgent: string | string[];
3078
+ /** Paths to allow, e.g. `['/']`. */
3079
+ allow?: string[];
3080
+ /** Paths to disallow, e.g. `['/api/']`. */
3081
+ disallow?: string[];
3082
+ /** Optional `Crawl-delay` (non-standard but widely honored). */
3083
+ crawlDelay?: number;
3084
+ }
3085
+ /**
3086
+ * Content Signals (https://contentsignals.org) — declares how crawlers may use
3087
+ * this site's content. Each flag renders as `<signal>=yes|no`; omitted flags
3088
+ * are not emitted (unset = no preference expressed).
3089
+ */
3090
+ interface ContentSignals {
3091
+ /** May content be indexed for search? → `search=yes|no`. */
3092
+ search?: boolean;
3093
+ /** May content be used as AI input (RAG, grounding)? → `ai-input=yes|no`. */
3094
+ aiInput?: boolean;
3095
+ /** May content be used for AI training? → `ai-train=yes|no`. */
3096
+ aiTrain?: boolean;
3097
+ }
3098
+ /** Configuration for `buildRobotsTxt`. Every field is optional. */
3099
+ interface RobotsConfig {
3100
+ /** Policy groups. Defaults to `[{ userAgent: '*', allow: ['/'] }]`. */
3101
+ policies?: RobotsPolicy[];
3102
+ /**
3103
+ * Stance toward known AI crawlers ({@link AI_BOT_USER_AGENTS}): `'allow'`
3104
+ * (default — an explicit `Allow: /` group per bot, so readiness checkers see
3105
+ * AI bots addressed), `'deny'` (a `Disallow: /` group per bot), or explicit
3106
+ * per-bot policies for finer control.
3107
+ */
3108
+ aiBots?: 'allow' | 'deny' | RobotsPolicy[];
3109
+ /** Content-Signal directive attached to the `User-agent: *` group. */
3110
+ contentSignals?: ContentSignals;
3111
+ /**
3112
+ * Sitemap URLs. Defaults to `${siteUrl}/sitemap.xml` when `config.sitemap`
3113
+ * is set; pass `[]` to emit no `Sitemap:` line.
3114
+ */
3115
+ sitemaps?: string[];
3116
+ }
3117
+ /** One URL entry for the generated sitemap.xml. */
3118
+ interface SitemapUrl {
3119
+ /** Absolute URL, or a path resolved against `siteUrl`. */
3120
+ loc: string;
3121
+ /** ISO-8601 last-modified date. */
3122
+ lastmod?: string;
3123
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
3124
+ /** 0.0–1.0. */
3125
+ priority?: number;
3126
+ }
2435
3127
  /** Configuration for the agent-readiness discovery layer. */
2436
3128
  interface AgentReadyConfig {
2437
3129
  /** BuildBase server base URL, e.g. `https://api.buildbase.app` (no trailing slash needed). */
@@ -2484,8 +3176,46 @@ interface AgentReadyConfig {
2484
3176
  * `buildAuthMd` generates one from the OAuth metadata + site config.
2485
3177
  */
2486
3178
  authMd?: string;
3179
+ /**
3180
+ * Local `/llms.txt` content. Takes precedence over the org-authored llms.txt
3181
+ * from the platform bundle — use when the app owns richer llms.txt content.
3182
+ */
3183
+ llmsTxt?: string;
3184
+ /** robots.txt generation (`buildRobotsTxt`). Omitted = sane defaults. */
3185
+ robots?: RobotsConfig;
3186
+ /**
3187
+ * URLs for a minimal generated sitemap.xml (`buildSitemap`). Omit when the
3188
+ * app already generates sitemaps (e.g. next-sitemap) — the builder then
3189
+ * returns null and your own files win.
3190
+ */
3191
+ sitemap?: {
3192
+ urls: Array<string | SitemapUrl>;
3193
+ };
3194
+ /**
3195
+ * RFC 9728 protected resources this app serves, defined locally (app-owned).
3196
+ * When set, the SDK builds the `/.well-known/oauth-protected-resource`
3197
+ * document from this config — `authorization_servers` is derived from
3198
+ * `serverUrl`/`orgId` (the BuildBase issuer). Takes precedence over the
3199
+ * platform bundle. Omit to fall back to the org-configured bundle.
3200
+ */
3201
+ protectedResources?: Array<{
3202
+ /** The protected API's resource URI. Defaults to `siteUrl`. */
3203
+ resource?: string;
3204
+ /** Scopes this resource accepts (`scopes_supported`). */
3205
+ scopes?: string[];
3206
+ /** Human documentation URL (`resource_documentation`). */
3207
+ documentationUrl?: string;
3208
+ /** Bearer methods (`bearer_methods_supported`). Defaults to `['header']`. */
3209
+ bearerMethods?: string[];
3210
+ }>;
2487
3211
  /** TTL (seconds) for cached platform fetches. Default 300 (5 min). */
2488
3212
  cacheTtlSeconds?: number;
3213
+ /**
3214
+ * Timeout (ms) for platform fetches. Fail-soft on timeout, so a hung or slow
3215
+ * BuildBase server can't hang discovery routes forever. Default 5000; set `0`
3216
+ * to disable.
3217
+ */
3218
+ fetchTimeoutMs?: number;
2489
3219
  /** Injectable fetch, mainly for testing. Defaults to the global `fetch`. */
2490
3220
  fetch?: typeof fetch;
2491
3221
  }
@@ -2495,7 +3225,15 @@ interface DiscoveryDocument {
2495
3225
  contentType: string;
2496
3226
  body: string;
2497
3227
  cacheControl: string;
3228
+ /** Value for a `Vary` response header, when the body is negotiated. */
3229
+ vary?: string;
2498
3230
  }
3231
+ /**
3232
+ * User-agent strings of the known AI crawlers/agents that agent-readiness
3233
+ * checkers look for in robots.txt (`buildRobotsTxt` emits a policy group per
3234
+ * entry when `robots.aiBots` is `'allow'`/`'deny'`).
3235
+ */
3236
+ declare const AI_BOT_USER_AGENTS: readonly string[];
2499
3237
  /**
2500
3238
  * SHA-256 of `content` as `sha256:<hex>`, via the shared pure-JS hash (no Web
2501
3239
  * Crypto / Node `crypto`), so output is identical on every runtime.
@@ -2509,7 +3247,7 @@ declare function sha256Digest(content: string): string;
2509
3247
  * simply see the app as not (yet) agent-ready.
2510
3248
  */
2511
3249
  declare function fetchAgentReadiness(config: AgentReadyConfig): Promise<AgentReadinessBundle>;
2512
- /** Clear the in-memory agent-readiness cache (mainly for tests). */
3250
+ /** Clear the in-memory agent-readiness caches (mainly for tests). */
2513
3251
  declare function clearAgentReadinessCache(): void;
2514
3252
  /**
2515
3253
  * The Agent Card served at `/.well-known/agent.json`. A stable, machine-readable
@@ -2519,16 +3257,24 @@ declare function buildAgentCard(config: AgentReadyConfig, bundle: AgentReadiness
2519
3257
  /**
2520
3258
  * Resolve the RFC 9728 protected-resource metadata for a request path, or null
2521
3259
  * if no configured resource maps to it.
3260
+ *
3261
+ * App-owned and local: built entirely from `config.protectedResources`, with
3262
+ * `authorization_servers` derived from `serverUrl`/`orgId` (the BuildBase
3263
+ * issuer). No platform round-trip.
2522
3264
  */
2523
- declare function buildProtectedResourceMetadata(requestPath: string, config: AgentReadyConfig, bundle: AgentReadinessBundle): DiscoveryDocument | null;
3265
+ declare function buildProtectedResourceMetadata(requestPath: string, config: AgentReadyConfig): DiscoveryDocument | null;
2524
3266
  /** Agent Skills discovery index (Agent Skills Discovery RFC v0.2.0). */
2525
3267
  declare function buildAgentSkillsIndex(config: AgentReadyConfig): DiscoveryDocument | null;
2526
3268
  /** Serve a single skill's SKILL.md by request path, or null if none matches. */
2527
3269
  declare function buildSkillMd(requestPath: string, config: AgentReadyConfig): DiscoveryDocument | null;
2528
3270
  /** security.txt (RFC 9116), or null when not configured. */
2529
3271
  declare function buildSecurityTxt(config: AgentReadyConfig): DiscoveryDocument | null;
2530
- /** The org-authored llms.txt, or null when the org hasn't set one. */
2531
- declare function buildLlmsTxt(config: AgentReadyConfig, bundle: AgentReadinessBundle): DiscoveryDocument | null;
3272
+ /**
3273
+ * The `/llms.txt` document from `config.llmsTxt` (app-authored). Returns null
3274
+ * when not set — serve your own static file instead. llms.txt is app content,
3275
+ * not platform-managed.
3276
+ */
3277
+ declare function buildLlmsTxt(config: AgentReadyConfig): DiscoveryDocument | null;
2532
3278
  /**
2533
3279
  * API Catalog (RFC 9727) as a `linkset+json` document for
2534
3280
  * `/.well-known/api-catalog`. Returns null when no APIs are configured.
@@ -2546,6 +3292,42 @@ declare function buildMcpServerCard(config: AgentReadyConfig): DiscoveryDocument
2546
3292
  * there is nothing to describe (no authorizationServer and no override).
2547
3293
  */
2548
3294
  declare function buildAuthMd(config: AgentReadyConfig, bundle: AgentReadinessBundle): DiscoveryDocument | null;
3295
+ /**
3296
+ * robots.txt with AI-bot policy groups, Content Signals, and sitemap
3297
+ * references. Always returns a document — with no `config.robots` it emits an
3298
+ * allow-all default policy plus an explicit `Allow: /` group per known AI bot.
3299
+ */
3300
+ declare function buildRobotsTxt(config: AgentReadyConfig): DiscoveryDocument;
3301
+ /**
3302
+ * A minimal sitemap.xml from `config.sitemap.urls`, or null when not
3303
+ * configured. Meant for API-first apps that would otherwise have no sitemap —
3304
+ * apps with real content pipelines (e.g. next-sitemap) should keep those and
3305
+ * omit `config.sitemap`.
3306
+ */
3307
+ declare function buildSitemap(config: AgentReadyConfig): DiscoveryDocument | null;
3308
+ /**
3309
+ * True when an `Accept` header prefers markdown (`text/markdown` /
3310
+ * `text/x-markdown`) over `text/html` — q-value aware, so
3311
+ * `text/html;q=0.5, text/markdown` is markdown but `text/markdown;q=0.1,
3312
+ * text/html` is not. A bare wildcard does not count as a markdown preference.
3313
+ */
3314
+ declare function wantsMarkdown(acceptHeader: string | null | undefined): boolean;
3315
+ /**
3316
+ * Markdown content negotiation: pick the markdown or HTML variant of a page
3317
+ * per the `Accept` header. The returned document carries `vary: 'Accept'` —
3318
+ * forward it so caches key on the header.
3319
+ */
3320
+ declare function negotiateMarkdown(acceptHeader: string | null | undefined, variants: {
3321
+ html: string;
3322
+ markdown: string;
3323
+ }, config?: Pick<AgentReadyConfig, 'cacheTtlSeconds'>): DiscoveryDocument;
3324
+ /**
3325
+ * Value for a `Link` response header advertising this app's discovery
3326
+ * documents (llms.txt, Agent Card, and — when configured — sitemap, API
3327
+ * catalog, MCP server card). Sync and pure (no platform fetch), so it's safe
3328
+ * in edge middleware.
3329
+ */
3330
+ declare function buildDiscoveryLinkHeader(config: AgentReadyConfig): string;
2549
3331
  /**
2550
3332
  * Resolve any `.well-known` request path to its discovery document, or null if
2551
3333
  * this app serves nothing there (caller should 404).
@@ -2554,10 +3336,18 @@ declare function buildAuthMd(config: AgentReadyConfig, bundle: AgentReadinessBun
2554
3336
  * oauth-authorization-server (pointer), agent-skills index + SKILL.md,
2555
3337
  * security.txt, api-catalog (RFC 9727), and the MCP server card.
2556
3338
  *
2557
- * Root-level docs are served via their own builders (they aren't under
2558
- * `.well-known`): `buildLlmsTxt` for `/llms.txt` and `buildAuthMd` for `/auth.md`.
3339
+ * Root-level docs (`/robots.txt`, `/llms.txt`, `/auth.md`, …) are not handled
3340
+ * here — use {@link resolveAgentPath}, which covers both, for new wiring.
2559
3341
  */
2560
3342
  declare function resolveWellKnown(requestPath: string, config: AgentReadyConfig): Promise<DiscoveryDocument | null>;
3343
+ /**
3344
+ * Superset of {@link resolveWellKnown}: resolves ANY agent-facing path — the
3345
+ * root-level documents (`/robots.txt`, `/sitemap.xml`, `/llms.txt`,
3346
+ * `/auth.md`, `/security.txt`) plus everything under `/.well-known/*`. One
3347
+ * catch-all (or middleware) wired to this function covers the app's entire
3348
+ * agent-readiness surface. Returns null for paths this app doesn't serve.
3349
+ */
3350
+ declare function resolveAgentPath(requestPath: string, config: AgentReadyConfig): Promise<DiscoveryDocument | null>;
2561
3351
  /** A WebMCP tool definition exposed to in-page agents via `navigator.modelContext`. */
2562
3352
  interface WebMcpTool {
2563
3353
  name: string;
@@ -2644,6 +3434,13 @@ interface AppTokenRequestClaims {
2644
3434
  resource?: string[];
2645
3435
  /** The OAuth2 client's display title. */
2646
3436
  clientTitle?: string;
3437
+ /**
3438
+ * Per-user BuildBase session bound to this grant. Embed it ENCRYPTED in the
3439
+ * token you mint (JWTs are signed, not encrypted) and never store it — your
3440
+ * MCP/agent endpoints decrypt it per request to call BuildBase as this user
3441
+ * (`buildbase.withSession(...)`). Fresh on every grant, including refresh.
3442
+ */
3443
+ sessionId?: string;
2647
3444
  [claim: string]: unknown;
2648
3445
  }
2649
3446
  /** The payload BuildBase sends to `applicationRevokeUrl`. */
@@ -2653,14 +3450,43 @@ interface AppRevokeRequestClaims {
2653
3450
  reason: string;
2654
3451
  [claim: string]: unknown;
2655
3452
  }
3453
+ /** Options for {@link verifyClientJwt} (all optional; secure defaults). */
3454
+ interface VerifyClientJwtOptions {
3455
+ /** Allowed clock skew in seconds for `exp`/`nbf`. Default 60. */
3456
+ clockToleranceSec?: number;
3457
+ /**
3458
+ * Require a numeric `exp` claim. Default **true** — a JWT with no expiry
3459
+ * would never expire, so a leaked token stays valid forever. Set `false`
3460
+ * only for a token type you know is intentionally non-expiring.
3461
+ */
3462
+ requireExp?: boolean;
3463
+ /** If set, `iss` must equal this value (RFC 7519 issuer check). */
3464
+ issuer?: string;
3465
+ /** If set, `aud` must equal (or, for an array `aud`, include) this value. */
3466
+ audience?: string;
3467
+ }
2656
3468
  /**
2657
3469
  * Verify a BuildBase-issued HS256 JWT (signed with the client secret) and return
2658
- * its payload. Checks the signature (timing-safe), the algorithm, and `exp`/`nbf`.
3470
+ * its payload. Checks the signature (timing-safe), the algorithm, `exp`/`nbf`,
3471
+ * and — by default — that an `exp` is present at all. Optionally pins `iss`/`aud`.
2659
3472
  * Throws {@link AppBridgeError} on any failure.
3473
+ *
3474
+ * The third argument accepts either the legacy `clockToleranceSec` number or a
3475
+ * {@link VerifyClientJwtOptions} object.
2660
3476
  */
2661
- declare function verifyClientJwt(token: string, clientSecret: string, clockToleranceSec?: number): Record<string, any>;
3477
+ declare function verifyClientJwt(token: string, clientSecret: string, optionsOrTolerance?: number | VerifyClientJwtOptions): Record<string, any>;
2662
3478
  /** Extract the token from an `Authorization: Bearer <token>` header. */
2663
3479
  declare function extractBearerToken(authorization: string | null | undefined): string | null;
3480
+ /**
3481
+ * Sign an HS256 JWT — the symmetric counterpart of {@link verifyClientJwt}.
3482
+ * Sets `iat` and `exp` (from `expiresInSec`, default 3600) unless the payload
3483
+ * already carries them. The intended use is minting the app's own agent access
3484
+ * tokens in an `applicationTokenUrl` handler, embedding whatever claims the
3485
+ * MCP/API layer needs to verify later (e.g. `sub`, `scope`, a session id).
3486
+ */
3487
+ declare function signClientJwt(payload: Record<string, unknown>, secret: string, options?: {
3488
+ expiresInSec?: number;
3489
+ }): string;
2664
3490
  interface VerifyOptions {
2665
3491
  /** The `Authorization` header value from the incoming request. */
2666
3492
  authorization: string | null | undefined;
@@ -2735,20 +3561,6 @@ declare function handleAppRevokeRequest(options: {
2735
3561
  success: boolean;
2736
3562
  message?: string;
2737
3563
  }>>;
2738
- /**
2739
- * Build the 401 an agent should receive when it calls your protected API without
2740
- * a valid token. The `WWW-Authenticate: Bearer resource_metadata=...` header
2741
- * points the agent at your `/.well-known/oauth-protected-resource` document,
2742
- * bootstrapping the OAuth discovery flow (RFC 9728 §5.1, RFC 6750 §3).
2743
- *
2744
- * @example
2745
- * ```ts
2746
- * if (!isValid(token)) {
2747
- * const c = bearerChallenge({ resourceMetadataUrl: "https://imejis.io/.well-known/oauth-protected-resource" });
2748
- * res.writeHead(c.status, c.headers).end(c.body);
2749
- * }
2750
- * ```
2751
- */
2752
3564
  declare function bearerChallenge(options: {
2753
3565
  resourceMetadataUrl: string;
2754
3566
  error?: 'invalid_token' | 'insufficient_scope' | string;
@@ -3043,5 +3855,5 @@ interface BuildBaseResult extends ScopedActions {
3043
3855
  }
3044
3856
  declare function BuildBase(config: BuildBaseConfig): BuildBaseResult;
3045
3857
 
3046
- export { ApiVersion, AppBridgeError, AuthApi, AuthStatus, BBAction, BBScreen, BBStatus, BB_PARAM, BaseApi, BetaForm, BillingIntervals, BuildBase, CURRENCY_DISPLAY, CURRENCY_FLAG, CreditBucketSource, CreditBucketStatus, CreditTransactionType, DEFAULT_ROLE_PERMISSIONS, DunningState, EventEmitter, InvoiceStatuses, PLAN_CURRENCY_CODES, PLAN_CURRENCY_OPTIONS, PUSH_SERVICE_WORKER_SCRIPT, Permission, PushApi, SDKEvent, SettingsApi, SubscriptionItemType, SubscriptionStatus, UserApi, WorkspaceApi, appTokenFailure, appTokenSuccess, bearerChallenge, buildAgentCard, buildAgentSkillsIndex, buildApiCatalog, buildAuthMd, buildLlmsTxt, buildMcpServerCard, buildProtectedResourceMetadata, buildSecurityTxt, buildSkillMd, calculateBillableSeats, calculateSeatOverageCents, calculateTotalSubscriptionCents, cleanBBParams, clearAgentReadinessCache, clearAuthIntent, consumeAuthIntent, createBBUrl, createCheckoutRedirectUrls, createCreditPurchaseRedirectUrls, BuildBase as default, eventEmitter, extractBearerToken, fetchAgentReadiness, formatCents, formatOverageRate, formatOverageRateWithLabel, formatQuotaIncludedOverage, formatQuotaWithPrice, getAvailableCurrenciesFromPlans, getBasePriceCents, getBillingIntervalAndCurrencyFromPriceId, getCurrencyFlag, getCurrencySymbol, getDisplayCurrency, getPerSeatPriceCents, getPricingVariant, getQuotaDisplayValue, getQuotaDisplayWithVariant, getQuotaOverageCents, getQuotaUnitLabelFromName, getSeatPricing, getStripePriceIdForInterval, handleAppRevokeRequest, handleAppTokenRequest, hasPermission, invalidateCreditBalance, invalidateQuotaUsage, invalidateSubscription, parseWebhookEvent, provideWebMcpTools, readBBParams, resolveMaxUsers, resolvePermissions, resolveWellKnown, safeRedirect, saveAuthIntent, sha256Digest, validateInvite, validateRedirectUrl, verifyAppRevokeRequest, verifyAppTokenRequest, verifyClientJwt, verifyWebhookSignature };
3047
- export type { AgentReadinessBundle, AgentReadyConfig, AgentSkill, ApiCatalogApi, AppRevokeRequestClaims, AppTokenRequestClaims, AppTokenResponseBody, AppTokenResult, BBActionType, BBScreenType, BBStatusType, BetaFormData, BetaFormResponse, BillingInterval, BuildBaseConfig, BuildBaseResult, BuildBaseSession, CheckoutResult, CreditActions, CreditBucketSourceType, CreditBucketStatusType, CreditTransactionTypeValue, DiscoveryDocument, DunningStateType, EventData, EventType, FeatureActions, FormatQuotaWithPriceOptions, GetCheckoutStripeParams, HandlerResult, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IConsumeCreditsRequest, IConsumeCreditsResponse, ICreditBalance, ICreditBucket, ICreditBucketsQuery, ICreditBucketsResponse, ICreditPackage, ICreditPackagePricingVariant, ICreditPurchaseRequest, ICreditPurchaseResponse, ICreditTransaction, ICreditTransactionsQuery, ICreditTransactionsResponse, IEventCallbacks, IExpiringCreditsResponse, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicCreditPackage, IPublicCreditPackagesResponse, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, InviteBlockReason, InviteValidation, InvoiceActions, InvoiceStatus, InvoiceStatusType, MaxUsersConfig, McpServerCard, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionActions, PermissionContext, PermissionKey, PlanActions, PlanVersionWithPricingVariants, QuotaDisplayValue, QuotaDisplayWithOverage, RolePermissionMap, ScopedActions, SettingsActions, SubscriptionActions, SubscriptionItemTypeValue, SubscriptionStatusType, UsageActions, UserActions, UserCreatedEventData, UserUpdatedEventData, WebMcpTool, WorkspaceActions, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
3858
+ export { AI_BOT_USER_AGENTS, ApiVersion, AppBridgeError, AuthApi, AuthStatus, BBAction, BBScreen, BBStatus, BB_PARAM, BaseApi, BetaForm, BillingIntervals, BuildBase, CURRENCY_DISPLAY, CURRENCY_FLAG, CreditBucketSource, CreditBucketStatus, CreditTransactionType, DEFAULT_ROLE_PERMISSIONS, DunningState, EventEmitter, InvoiceStatuses, PLAN_CURRENCY_CODES, PLAN_CURRENCY_OPTIONS, PUSH_SERVICE_WORKER_SCRIPT, Permission, PushApi, SDKEvent, SettingsApi, SubscriptionItemType, SubscriptionStatus, UserApi, WorkspaceApi, appTokenFailure, appTokenSuccess, bearerChallenge, buildAgentCard, buildAgentSkillsIndex, buildApiCatalog, buildAuthMd, buildDiscoveryLinkHeader, buildLlmsTxt, buildMcpServerCard, buildProtectedResourceMetadata, buildRobotsTxt, buildSecurityTxt, buildSitemap, buildSkillMd, calculateBillableSeats, calculateSeatOverageCents, calculateTotalSubscriptionCents, cleanBBParams, clearAgentReadinessCache, clearAuthIntent, consumeAuthIntent, createBBUrl, createCheckoutRedirectUrls, createCreditPurchaseRedirectUrls, BuildBase as default, eventEmitter, extractBearerToken, fetchAgentReadiness, formatCents, formatOverageRate, formatOverageRateWithLabel, formatQuotaIncludedOverage, formatQuotaWithPrice, getAvailableCurrenciesFromPlans, getBasePriceCents, getBillingIntervalAndCurrencyFromPriceId, getCurrencyFlag, getCurrencySymbol, getDisplayCurrency, getPerSeatPriceCents, getPricingVariant, getQuotaDisplayValue, getQuotaDisplayWithVariant, getQuotaOverageCents, getQuotaUnitLabelFromName, getSeatPricing, getStripePriceIdForInterval, handleAppRevokeRequest, handleAppTokenRequest, hasPermission, invalidateCreditBalance, invalidateQuotaUsage, invalidateSubscription, negotiateMarkdown, parseWebhookEvent, provideWebMcpTools, readBBParams, resolveAgentPath, resolveMaxUsers, resolvePermissions, resolveWellKnown, safeRedirect, saveAuthIntent, sha256Digest, signClientJwt, validateInvite, validateRedirectUrl, verifyAppRevokeRequest, verifyAppTokenRequest, verifyClientJwt, verifyWebhookSignature, wantsMarkdown };
3859
+ export type { AgentReadinessBundle, AgentReadyConfig, AgentSkill, ApiCatalogApi, AppRevokeRequestClaims, AppTokenRequestClaims, AppTokenResponseBody, AppTokenResult, BBActionType, BBScreenType, BBStatusType, BetaFormData, BetaFormResponse, BillingInterval, BuildBaseConfig, BuildBaseResult, BuildBaseSession, CheckoutResult, ContentSignals, CreditActions, CreditBucketSourceType, CreditBucketStatusType, CreditTransactionTypeValue, DiscoveryDocument, DunningStateType, EventData, EventType, FeatureActions, FormatQuotaWithPriceOptions, GetCheckoutStripeParams, HandlerResult, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IConsumeCreditsRequest, IConsumeCreditsResponse, ICreditBalance, ICreditBucket, ICreditBucketsQuery, ICreditBucketsResponse, ICreditPackage, ICreditPackagePricingVariant, ICreditPurchaseRequest, ICreditPurchaseResponse, ICreditTransaction, ICreditTransactionsQuery, ICreditTransactionsResponse, IEventCallbacks, IExpiringCreditsResponse, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicCreditPackage, IPublicCreditPackagesResponse, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, ISettings, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, IUser, IWorkspace, InviteBlockReason, InviteValidation, InvoiceActions, InvoiceStatus, InvoiceStatusType, MaxUsersConfig, McpServerCard, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionActions, PermissionContext, PermissionKey, PlanActions, PlanVersionWithPricingVariants, QuotaDisplayValue, QuotaDisplayWithOverage, RobotsConfig, RobotsPolicy, RolePermissionMap, ScopedActions, SettingsActions, SitemapUrl, SubscriptionActions, SubscriptionItemTypeValue, SubscriptionStatusType, TranslationKey, UsageActions, UserActions, UserCreatedEventData, UserUpdatedEventData, WebMcpTool, WorkspaceActions, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };