@zuplo/runtime 7.5.6 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -641,25 +641,6 @@ export declare class AIGatewayMeteringV2InboundPolicy extends InboundPolicy<AIGa
641
641
  static getQuotaFallback(
642
642
  context: ZuploContext
643
643
  ): QuotaFallbackModels | undefined;
644
- /**
645
- * Compose request-scoped limit overrides with any limits already set.
646
- *
647
- * Limits intentionally merge at each meter, period, and setting leaf because
648
- * independent policies may tighten one path without restating sibling limits.
649
- * Defined values from the newest call win; undefined values never erase an
650
- * earlier value.
651
- *
652
- * @param context - The current request context
653
- * @param limits - Limits or partial leaf overrides to compose
654
- */
655
- static setLimits(
656
- context: ZuploContext,
657
- limits: AIGatewayMeteringV2LimitOverrides
658
- ): void;
659
- /** Read request-scoped limit overrides. */
660
- static getLimits(
661
- context: ZuploContext
662
- ): AIGatewayMeteringV2LimitOverrides | undefined;
663
644
  /** Increment meters directly, for example after a streaming response. */
664
645
  static incrementMeters(
665
646
  configurationId: string,
@@ -689,6 +670,30 @@ export declare interface AIGatewayMeteringV2InboundPolicyOptions {
689
670
  */
690
671
  throwOnFailure?: boolean;
691
672
  /**
673
+ * Budget rules for this application. Each rule budgets the whole app ("app") or each distinct value of an expression ("expression"), with warn and block thresholds per meter and period.
674
+ *
675
+ * @maxItems 5
676
+ */
677
+ budgetRules?:
678
+ | []
679
+ | [MeteringBudgetRule]
680
+ | [MeteringBudgetRule, MeteringBudgetRule]
681
+ | [MeteringBudgetRule, MeteringBudgetRule, MeteringBudgetRule]
682
+ | [
683
+ MeteringBudgetRule,
684
+ MeteringBudgetRule,
685
+ MeteringBudgetRule,
686
+ MeteringBudgetRule,
687
+ ]
688
+ | [
689
+ MeteringBudgetRule,
690
+ MeteringBudgetRule,
691
+ MeteringBudgetRule,
692
+ MeteringBudgetRule,
693
+ MeteringBudgetRule,
694
+ ];
695
+ /**
696
+ * @deprecated
692
697
  * Usage limits grouped by meter.
693
698
  */
694
699
  limits?: {
@@ -699,8 +704,7 @@ export declare interface AIGatewayMeteringV2InboundPolicyOptions {
699
704
  }
700
705
 
701
706
  /**
702
- * Request-scoped usage-limit overrides accepted by
703
- * `AIGatewayMeteringV2InboundPolicy.setLimits`.
707
+ * Usage-limit settings accepted by the `options.limits` policy option.
704
708
  */
705
709
  export declare interface AIGatewayMeteringV2LimitOverrides {
706
710
  costs?: AIGatewayMeteringV2MeterLimitOverrides;
@@ -708,20 +712,20 @@ export declare interface AIGatewayMeteringV2LimitOverrides {
708
712
  requests?: AIGatewayMeteringV2MeterLimitOverrides;
709
713
  }
710
714
 
711
- /** Daily and monthly overrides for one usage meter. */
715
+ /** Daily and monthly settings for one usage meter. */
712
716
  declare interface AIGatewayMeteringV2MeterLimitOverrides {
713
717
  daily?: AIGatewayMeteringV2PeriodLimitOverride;
714
718
  monthly?: AIGatewayMeteringV2PeriodLimitOverride;
715
719
  }
716
720
 
717
- /** Settings that a policy can override for one usage-limit period. */
721
+ /** Settings for one usage-limit period. */
718
722
  declare interface AIGatewayMeteringV2PeriodLimitOverride {
719
723
  enabled?: boolean;
720
724
  limit?: number;
721
725
  warning?: AIGatewayMeteringV2WarningLimitOverride;
722
726
  }
723
727
 
724
- /** Warning settings that a policy can override for one usage-limit period. */
728
+ /** Warning settings for one usage-limit period. */
725
729
  declare interface AIGatewayMeteringV2WarningLimitOverride {
726
730
  enabled?: boolean;
727
731
  threshold?: number;
@@ -10451,6 +10455,26 @@ declare interface Meter {
10451
10455
  */
10452
10456
  declare type Meter_2 = Partial<OpenMeterEvent> & Meter;
10453
10457
 
10458
+ declare interface MeteringBudgetRule {
10459
+ budgetBy: "app" | "expression";
10460
+ /**
10461
+ * Required when budgetBy is "expression"; forbidden for "app". Each distinct value gets its own budget.
10462
+ */
10463
+ expression?: string;
10464
+ /**
10465
+ * @minItems 1
10466
+ * @maxItems 24
10467
+ */
10468
+ meters: [MeteringBudgetRuleMeter, ...MeteringBudgetRuleMeter[]];
10469
+ }
10470
+
10471
+ declare interface MeteringBudgetRuleMeter {
10472
+ meter: "cost" | "requests" | "tokens";
10473
+ period: "hourly" | "daily" | "weekly" | "monthly";
10474
+ value: number;
10475
+ action: "warn" | "block";
10476
+ }
10477
+
10454
10478
  declare interface MeterUsageMap {
10455
10479
  [meter: string]: number;
10456
10480
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zuplo/runtime",
3
3
  "type": "module",
4
- "version": "7.5.6",
4
+ "version": "7.6.0",
5
5
  "repository": "https://github.com/zuplo/zuplo",
6
6
  "author": "Zuplo, Inc.",
7
7
  "exports": {