@miradorlabs/web-grpc 3.2.0 → 3.4.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.
@@ -93,6 +93,16 @@ export enum AISessionEventKind {
93
93
  AI_SESSION_EVENT_KIND_ERROR = 10,
94
94
  /** AI_SESSION_EVENT_KIND_SUBAGENT_RUN - One subagent run: what launched it, its parent and type, how it ended. Carries no usage. */
95
95
  AI_SESSION_EVENT_KIND_SUBAGENT_RUN = 11,
96
+ /**
97
+ * AI_SESSION_EVENT_KIND_AUTH - The harness's ambient records: no usage, and none of them makes a session on its own. Presence,
98
+ * status and duration only; what they report stays in the stored event's attributes.
99
+ */
100
+ AI_SESSION_EVENT_KIND_AUTH = 12,
101
+ AI_SESSION_EVENT_KIND_MCP_CONNECTION = 13,
102
+ AI_SESSION_EVENT_KIND_SKILL_ACTIVATION = 14,
103
+ AI_SESSION_EVENT_KIND_PERMISSION_CHANGE = 15,
104
+ AI_SESSION_EVENT_KIND_CONTEXT_MENTION = 16,
105
+ AI_SESSION_EVENT_KIND_USER_FEEDBACK = 17,
96
106
  UNRECOGNIZED = -1,
97
107
  }
98
108
 
@@ -134,6 +144,24 @@ export function aISessionEventKindFromJSON(object: any): AISessionEventKind {
134
144
  case 11:
135
145
  case "AI_SESSION_EVENT_KIND_SUBAGENT_RUN":
136
146
  return AISessionEventKind.AI_SESSION_EVENT_KIND_SUBAGENT_RUN;
147
+ case 12:
148
+ case "AI_SESSION_EVENT_KIND_AUTH":
149
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_AUTH;
150
+ case 13:
151
+ case "AI_SESSION_EVENT_KIND_MCP_CONNECTION":
152
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_MCP_CONNECTION;
153
+ case 14:
154
+ case "AI_SESSION_EVENT_KIND_SKILL_ACTIVATION":
155
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_SKILL_ACTIVATION;
156
+ case 15:
157
+ case "AI_SESSION_EVENT_KIND_PERMISSION_CHANGE":
158
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_PERMISSION_CHANGE;
159
+ case 16:
160
+ case "AI_SESSION_EVENT_KIND_CONTEXT_MENTION":
161
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_CONTEXT_MENTION;
162
+ case 17:
163
+ case "AI_SESSION_EVENT_KIND_USER_FEEDBACK":
164
+ return AISessionEventKind.AI_SESSION_EVENT_KIND_USER_FEEDBACK;
137
165
  case -1:
138
166
  case "UNRECOGNIZED":
139
167
  default:
@@ -167,6 +195,18 @@ export function aISessionEventKindToJSON(object: AISessionEventKind): string {
167
195
  return "AI_SESSION_EVENT_KIND_ERROR";
168
196
  case AISessionEventKind.AI_SESSION_EVENT_KIND_SUBAGENT_RUN:
169
197
  return "AI_SESSION_EVENT_KIND_SUBAGENT_RUN";
198
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_AUTH:
199
+ return "AI_SESSION_EVENT_KIND_AUTH";
200
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_MCP_CONNECTION:
201
+ return "AI_SESSION_EVENT_KIND_MCP_CONNECTION";
202
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_SKILL_ACTIVATION:
203
+ return "AI_SESSION_EVENT_KIND_SKILL_ACTIVATION";
204
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_PERMISSION_CHANGE:
205
+ return "AI_SESSION_EVENT_KIND_PERMISSION_CHANGE";
206
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_CONTEXT_MENTION:
207
+ return "AI_SESSION_EVENT_KIND_CONTEXT_MENTION";
208
+ case AISessionEventKind.AI_SESSION_EVENT_KIND_USER_FEEDBACK:
209
+ return "AI_SESSION_EVENT_KIND_USER_FEEDBACK";
170
210
  case AISessionEventKind.UNRECOGNIZED:
171
211
  default:
172
212
  return "UNRECOGNIZED";
@@ -838,7 +878,7 @@ export interface AISessionSummary {
838
878
  /** The efforts the session's model calls ran at; "" when a call reported none. */
839
879
  efforts: string[];
840
880
  /** Who billed the session's model calls (stored names; map them through ReferenceGatewayService). */
841
- billingParties: string[];
881
+ billers: string[];
842
882
  /** How the session's model-call costs were obtained: 'reported' by the source, 'estimated' by Mirador. */
843
883
  costSources: string[];
844
884
  /** The seats the session's model calls drew on (an account can change mid-session). */
@@ -1693,10 +1733,15 @@ export interface ListModelPricesRequest {
1693
1733
  pageToken: string;
1694
1734
  }
1695
1735
 
1736
+ /**
1737
+ * AIModelPriceFilter selects prices by stored name, matched exactly (any-of within a field, AND across
1738
+ * fields). Filter on a display name by sending every stored name the reference registry maps onto it.
1739
+ */
1696
1740
  export interface AIModelPriceFilter {
1697
1741
  source: string[];
1698
- provider: string[];
1699
- model: string[];
1742
+ biller: string[];
1743
+ modelRaw: string[];
1744
+ providerRaw: string[];
1700
1745
  }
1701
1746
 
1702
1747
  export interface ListModelPricesResponse {
@@ -1709,7 +1754,7 @@ export interface ListModelPricesResponse {
1709
1754
  export interface ListModelPriceHistoryRequest {
1710
1755
  organizationId: string;
1711
1756
  projectId: string;
1712
- /** model is required; source and provider narrow it further. */
1757
+ /** model_raw is required; source, biller and provider_raw narrow it further. */
1713
1758
  filter:
1714
1759
  | AIModelPriceFilter
1715
1760
  | undefined;
@@ -1726,15 +1771,29 @@ export interface ListModelPriceHistoryResponse {
1726
1771
  truncated: boolean;
1727
1772
  }
1728
1773
 
1774
+ /**
1775
+ * AIModelPrice is one catalog listing's latest list price, under stored names the caller maps through
1776
+ * the reference registry (ListAIModels / ListAIProviders / ListAIBillers).
1777
+ */
1729
1778
  export interface AIModelPrice {
1730
1779
  source: string;
1731
- provider: string;
1732
- model: string;
1780
+ /** The platform that bills for the model (openrouter, anthropic, amazon-bedrock). */
1781
+ biller: string;
1782
+ /** The model as an AI call names it (claude-sonnet-4.5, not anthropic/claude-sonnet-4.5). */
1783
+ modelRaw: string;
1733
1784
  scrapedAt: Date | undefined;
1734
1785
  inputUsdPerMtok: number;
1735
1786
  outputUsdPerMtok: number;
1736
1787
  cacheReadUsdPerMtok: number;
1737
1788
  cacheWriteUsdPerMtok: number;
1789
+ /** The model vendor the listing names ("anthropic"), "" when it names none. */
1790
+ providerRaw: string;
1791
+ /** The effort the listing prices, "" when the catalog states none (every source today). */
1792
+ effortRaw: string;
1793
+ /** The catalog's exact model id: tells apart two listings of one model at one biller. */
1794
+ listingId: string;
1795
+ /** Normalized geography the price applies to (global, us, eu, ...), "" unscoped. */
1796
+ region: string;
1738
1797
  }
1739
1798
 
1740
1799
  export interface AITokenUsage {
@@ -1788,11 +1847,11 @@ export interface EntitlementsSnapshot {
1788
1847
  * SeatEntitlement mirrors telemetry.api.v1.SeatEntitlement: one entitlement owner's latest observed
1789
1848
  * funding state. Seat-scoped ((source_system, account_id)); principal_id/name best-effort. Seat-scoped:
1790
1849
  * windows are one seat's usage bars, never a team-pool sum. credits_balance_raw is verbatim, not USD.
1791
- * A seat is an entitlement owner (billing_party, account_id), linked to a person through its principal and
1850
+ * A seat is an entitlement owner (biller, account_id), linked to a person through its principal and
1792
1851
  * the org member an admin linked that principal to. Mirrors telemetry.api.v1.SeatEntitlement.
1793
1852
  */
1794
1853
  export interface SeatEntitlement {
1795
- billingParty: string;
1854
+ biller: string;
1796
1855
  accountId: string;
1797
1856
  principalId: string;
1798
1857
  principalName: string;
@@ -2433,7 +2492,7 @@ function createBaseAISessionSummary(): AISessionSummary {
2433
2492
  sessionVersion: 0,
2434
2493
  subagents: 0,
2435
2494
  efforts: [],
2436
- billingParties: [],
2495
+ billers: [],
2437
2496
  costSources: [],
2438
2497
  accountIds: [],
2439
2498
  observer: "",
@@ -2522,7 +2581,7 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2522
2581
  for (const v of message.efforts) {
2523
2582
  writer.uint32(210).string(v!);
2524
2583
  }
2525
- for (const v of message.billingParties) {
2584
+ for (const v of message.billers) {
2526
2585
  writer.uint32(218).string(v!);
2527
2586
  }
2528
2587
  for (const v of message.costSources) {
@@ -2769,7 +2828,7 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2769
2828
  break;
2770
2829
  }
2771
2830
 
2772
- message.billingParties.push(reader.string());
2831
+ message.billers.push(reader.string());
2773
2832
  continue;
2774
2833
  }
2775
2834
  case 28: {
@@ -2932,10 +2991,8 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
2932
2991
  efforts: globalThis.Array.isArray(object?.efforts)
2933
2992
  ? object.efforts.map((e: any) => globalThis.String(e))
2934
2993
  : [],
2935
- billingParties: globalThis.Array.isArray(object?.billingParties)
2936
- ? object.billingParties.map((e: any) => globalThis.String(e))
2937
- : globalThis.Array.isArray(object?.billing_parties)
2938
- ? object.billing_parties.map((e: any) => globalThis.String(e))
2994
+ billers: globalThis.Array.isArray(object?.billers)
2995
+ ? object.billers.map((e: any) => globalThis.String(e))
2939
2996
  : [],
2940
2997
  costSources: globalThis.Array.isArray(object?.costSources)
2941
2998
  ? object.costSources.map((e: any) => globalThis.String(e))
@@ -3039,8 +3096,8 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
3039
3096
  if (message.efforts?.length) {
3040
3097
  obj.efforts = message.efforts;
3041
3098
  }
3042
- if (message.billingParties?.length) {
3043
- obj.billingParties = message.billingParties;
3099
+ if (message.billers?.length) {
3100
+ obj.billers = message.billers;
3044
3101
  }
3045
3102
  if (message.costSources?.length) {
3046
3103
  obj.costSources = message.costSources;
@@ -3093,7 +3150,7 @@ export const AISessionSummary: MessageFns<AISessionSummary> = {
3093
3150
  message.sessionVersion = object.sessionVersion ?? 0;
3094
3151
  message.subagents = object.subagents ?? 0;
3095
3152
  message.efforts = object.efforts?.map((e) => e) || [];
3096
- message.billingParties = object.billingParties?.map((e) => e) || [];
3153
+ message.billers = object.billers?.map((e) => e) || [];
3097
3154
  message.costSources = object.costSources?.map((e) => e) || [];
3098
3155
  message.accountIds = object.accountIds?.map((e) => e) || [];
3099
3156
  message.observer = object.observer ?? "";
@@ -15511,7 +15568,7 @@ export const ListModelPricesRequest: MessageFns<ListModelPricesRequest> = {
15511
15568
  };
15512
15569
 
15513
15570
  function createBaseAIModelPriceFilter(): AIModelPriceFilter {
15514
- return { source: [], provider: [], model: [] };
15571
+ return { source: [], biller: [], modelRaw: [], providerRaw: [] };
15515
15572
  }
15516
15573
 
15517
15574
  export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
@@ -15519,12 +15576,15 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15519
15576
  for (const v of message.source) {
15520
15577
  writer.uint32(10).string(v!);
15521
15578
  }
15522
- for (const v of message.provider) {
15579
+ for (const v of message.biller) {
15523
15580
  writer.uint32(18).string(v!);
15524
15581
  }
15525
- for (const v of message.model) {
15582
+ for (const v of message.modelRaw) {
15526
15583
  writer.uint32(26).string(v!);
15527
15584
  }
15585
+ for (const v of message.providerRaw) {
15586
+ writer.uint32(34).string(v!);
15587
+ }
15528
15588
  return writer;
15529
15589
  },
15530
15590
 
@@ -15554,7 +15614,7 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15554
15614
  break;
15555
15615
  }
15556
15616
 
15557
- message.provider.push(reader.string());
15617
+ message.biller.push(reader.string());
15558
15618
  continue;
15559
15619
  }
15560
15620
  case 3: {
@@ -15562,7 +15622,15 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15562
15622
  break;
15563
15623
  }
15564
15624
 
15565
- message.model.push(reader.string());
15625
+ message.modelRaw.push(reader.string());
15626
+ continue;
15627
+ }
15628
+ case 4: {
15629
+ if (tag !== 34) {
15630
+ break;
15631
+ }
15632
+
15633
+ message.providerRaw.push(reader.string());
15566
15634
  continue;
15567
15635
  }
15568
15636
  }
@@ -15580,8 +15648,17 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15580
15648
  fromJSON(object: any): AIModelPriceFilter {
15581
15649
  return {
15582
15650
  source: globalThis.Array.isArray(object?.source) ? object.source.map((e: any) => globalThis.String(e)) : [],
15583
- provider: globalThis.Array.isArray(object?.provider) ? object.provider.map((e: any) => globalThis.String(e)) : [],
15584
- model: globalThis.Array.isArray(object?.model) ? object.model.map((e: any) => globalThis.String(e)) : [],
15651
+ biller: globalThis.Array.isArray(object?.biller) ? object.biller.map((e: any) => globalThis.String(e)) : [],
15652
+ modelRaw: globalThis.Array.isArray(object?.modelRaw)
15653
+ ? object.modelRaw.map((e: any) => globalThis.String(e))
15654
+ : globalThis.Array.isArray(object?.model_raw)
15655
+ ? object.model_raw.map((e: any) => globalThis.String(e))
15656
+ : [],
15657
+ providerRaw: globalThis.Array.isArray(object?.providerRaw)
15658
+ ? object.providerRaw.map((e: any) => globalThis.String(e))
15659
+ : globalThis.Array.isArray(object?.provider_raw)
15660
+ ? object.provider_raw.map((e: any) => globalThis.String(e))
15661
+ : [],
15585
15662
  };
15586
15663
  },
15587
15664
 
@@ -15590,11 +15667,14 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15590
15667
  if (message.source?.length) {
15591
15668
  obj.source = message.source;
15592
15669
  }
15593
- if (message.provider?.length) {
15594
- obj.provider = message.provider;
15670
+ if (message.biller?.length) {
15671
+ obj.biller = message.biller;
15595
15672
  }
15596
- if (message.model?.length) {
15597
- obj.model = message.model;
15673
+ if (message.modelRaw?.length) {
15674
+ obj.modelRaw = message.modelRaw;
15675
+ }
15676
+ if (message.providerRaw?.length) {
15677
+ obj.providerRaw = message.providerRaw;
15598
15678
  }
15599
15679
  return obj;
15600
15680
  },
@@ -15605,8 +15685,9 @@ export const AIModelPriceFilter: MessageFns<AIModelPriceFilter> = {
15605
15685
  fromPartial<I extends Exact<DeepPartial<AIModelPriceFilter>, I>>(object: I): AIModelPriceFilter {
15606
15686
  const message = createBaseAIModelPriceFilter();
15607
15687
  message.source = object.source?.map((e) => e) || [];
15608
- message.provider = object.provider?.map((e) => e) || [];
15609
- message.model = object.model?.map((e) => e) || [];
15688
+ message.biller = object.biller?.map((e) => e) || [];
15689
+ message.modelRaw = object.modelRaw?.map((e) => e) || [];
15690
+ message.providerRaw = object.providerRaw?.map((e) => e) || [];
15610
15691
  return message;
15611
15692
  },
15612
15693
  };
@@ -16024,13 +16105,17 @@ export const ListModelPriceHistoryResponse: MessageFns<ListModelPriceHistoryResp
16024
16105
  function createBaseAIModelPrice(): AIModelPrice {
16025
16106
  return {
16026
16107
  source: "",
16027
- provider: "",
16028
- model: "",
16108
+ biller: "",
16109
+ modelRaw: "",
16029
16110
  scrapedAt: undefined,
16030
16111
  inputUsdPerMtok: 0,
16031
16112
  outputUsdPerMtok: 0,
16032
16113
  cacheReadUsdPerMtok: 0,
16033
16114
  cacheWriteUsdPerMtok: 0,
16115
+ providerRaw: "",
16116
+ effortRaw: "",
16117
+ listingId: "",
16118
+ region: "",
16034
16119
  };
16035
16120
  }
16036
16121
 
@@ -16039,11 +16124,11 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16039
16124
  if (message.source !== "") {
16040
16125
  writer.uint32(10).string(message.source);
16041
16126
  }
16042
- if (message.provider !== "") {
16043
- writer.uint32(18).string(message.provider);
16127
+ if (message.biller !== "") {
16128
+ writer.uint32(18).string(message.biller);
16044
16129
  }
16045
- if (message.model !== "") {
16046
- writer.uint32(26).string(message.model);
16130
+ if (message.modelRaw !== "") {
16131
+ writer.uint32(26).string(message.modelRaw);
16047
16132
  }
16048
16133
  if (message.scrapedAt !== undefined) {
16049
16134
  Timestamp.encode(toTimestamp(message.scrapedAt), writer.uint32(34).fork()).join();
@@ -16060,6 +16145,18 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16060
16145
  if (message.cacheWriteUsdPerMtok !== 0) {
16061
16146
  writer.uint32(65).double(message.cacheWriteUsdPerMtok);
16062
16147
  }
16148
+ if (message.providerRaw !== "") {
16149
+ writer.uint32(74).string(message.providerRaw);
16150
+ }
16151
+ if (message.effortRaw !== "") {
16152
+ writer.uint32(82).string(message.effortRaw);
16153
+ }
16154
+ if (message.listingId !== "") {
16155
+ writer.uint32(90).string(message.listingId);
16156
+ }
16157
+ if (message.region !== "") {
16158
+ writer.uint32(98).string(message.region);
16159
+ }
16063
16160
  return writer;
16064
16161
  },
16065
16162
 
@@ -16089,7 +16186,7 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16089
16186
  break;
16090
16187
  }
16091
16188
 
16092
- message.provider = reader.string();
16189
+ message.biller = reader.string();
16093
16190
  continue;
16094
16191
  }
16095
16192
  case 3: {
@@ -16097,7 +16194,7 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16097
16194
  break;
16098
16195
  }
16099
16196
 
16100
- message.model = reader.string();
16197
+ message.modelRaw = reader.string();
16101
16198
  continue;
16102
16199
  }
16103
16200
  case 4: {
@@ -16140,6 +16237,38 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16140
16237
  message.cacheWriteUsdPerMtok = reader.double();
16141
16238
  continue;
16142
16239
  }
16240
+ case 9: {
16241
+ if (tag !== 74) {
16242
+ break;
16243
+ }
16244
+
16245
+ message.providerRaw = reader.string();
16246
+ continue;
16247
+ }
16248
+ case 10: {
16249
+ if (tag !== 82) {
16250
+ break;
16251
+ }
16252
+
16253
+ message.effortRaw = reader.string();
16254
+ continue;
16255
+ }
16256
+ case 11: {
16257
+ if (tag !== 90) {
16258
+ break;
16259
+ }
16260
+
16261
+ message.listingId = reader.string();
16262
+ continue;
16263
+ }
16264
+ case 12: {
16265
+ if (tag !== 98) {
16266
+ break;
16267
+ }
16268
+
16269
+ message.region = reader.string();
16270
+ continue;
16271
+ }
16143
16272
  }
16144
16273
  if ((tag & 7) === 4 || tag === 0) {
16145
16274
  break;
@@ -16155,8 +16284,12 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16155
16284
  fromJSON(object: any): AIModelPrice {
16156
16285
  return {
16157
16286
  source: isSet(object.source) ? globalThis.String(object.source) : "",
16158
- provider: isSet(object.provider) ? globalThis.String(object.provider) : "",
16159
- model: isSet(object.model) ? globalThis.String(object.model) : "",
16287
+ biller: isSet(object.biller) ? globalThis.String(object.biller) : "",
16288
+ modelRaw: isSet(object.modelRaw)
16289
+ ? globalThis.String(object.modelRaw)
16290
+ : isSet(object.model_raw)
16291
+ ? globalThis.String(object.model_raw)
16292
+ : "",
16160
16293
  scrapedAt: isSet(object.scrapedAt)
16161
16294
  ? fromJsonTimestamp(object.scrapedAt)
16162
16295
  : isSet(object.scraped_at)
@@ -16182,6 +16315,22 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16182
16315
  : isSet(object.cache_write_usd_per_mtok)
16183
16316
  ? globalThis.Number(object.cache_write_usd_per_mtok)
16184
16317
  : 0,
16318
+ providerRaw: isSet(object.providerRaw)
16319
+ ? globalThis.String(object.providerRaw)
16320
+ : isSet(object.provider_raw)
16321
+ ? globalThis.String(object.provider_raw)
16322
+ : "",
16323
+ effortRaw: isSet(object.effortRaw)
16324
+ ? globalThis.String(object.effortRaw)
16325
+ : isSet(object.effort_raw)
16326
+ ? globalThis.String(object.effort_raw)
16327
+ : "",
16328
+ listingId: isSet(object.listingId)
16329
+ ? globalThis.String(object.listingId)
16330
+ : isSet(object.listing_id)
16331
+ ? globalThis.String(object.listing_id)
16332
+ : "",
16333
+ region: isSet(object.region) ? globalThis.String(object.region) : "",
16185
16334
  };
16186
16335
  },
16187
16336
 
@@ -16190,11 +16339,11 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16190
16339
  if (message.source !== "") {
16191
16340
  obj.source = message.source;
16192
16341
  }
16193
- if (message.provider !== "") {
16194
- obj.provider = message.provider;
16342
+ if (message.biller !== "") {
16343
+ obj.biller = message.biller;
16195
16344
  }
16196
- if (message.model !== "") {
16197
- obj.model = message.model;
16345
+ if (message.modelRaw !== "") {
16346
+ obj.modelRaw = message.modelRaw;
16198
16347
  }
16199
16348
  if (message.scrapedAt !== undefined) {
16200
16349
  obj.scrapedAt = message.scrapedAt.toISOString();
@@ -16211,6 +16360,18 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16211
16360
  if (message.cacheWriteUsdPerMtok !== 0) {
16212
16361
  obj.cacheWriteUsdPerMtok = message.cacheWriteUsdPerMtok;
16213
16362
  }
16363
+ if (message.providerRaw !== "") {
16364
+ obj.providerRaw = message.providerRaw;
16365
+ }
16366
+ if (message.effortRaw !== "") {
16367
+ obj.effortRaw = message.effortRaw;
16368
+ }
16369
+ if (message.listingId !== "") {
16370
+ obj.listingId = message.listingId;
16371
+ }
16372
+ if (message.region !== "") {
16373
+ obj.region = message.region;
16374
+ }
16214
16375
  return obj;
16215
16376
  },
16216
16377
 
@@ -16220,13 +16381,17 @@ export const AIModelPrice: MessageFns<AIModelPrice> = {
16220
16381
  fromPartial<I extends Exact<DeepPartial<AIModelPrice>, I>>(object: I): AIModelPrice {
16221
16382
  const message = createBaseAIModelPrice();
16222
16383
  message.source = object.source ?? "";
16223
- message.provider = object.provider ?? "";
16224
- message.model = object.model ?? "";
16384
+ message.biller = object.biller ?? "";
16385
+ message.modelRaw = object.modelRaw ?? "";
16225
16386
  message.scrapedAt = object.scrapedAt ?? undefined;
16226
16387
  message.inputUsdPerMtok = object.inputUsdPerMtok ?? 0;
16227
16388
  message.outputUsdPerMtok = object.outputUsdPerMtok ?? 0;
16228
16389
  message.cacheReadUsdPerMtok = object.cacheReadUsdPerMtok ?? 0;
16229
16390
  message.cacheWriteUsdPerMtok = object.cacheWriteUsdPerMtok ?? 0;
16391
+ message.providerRaw = object.providerRaw ?? "";
16392
+ message.effortRaw = object.effortRaw ?? "";
16393
+ message.listingId = object.listingId ?? "";
16394
+ message.region = object.region ?? "";
16230
16395
  return message;
16231
16396
  },
16232
16397
  };
@@ -16799,7 +16964,7 @@ export const EntitlementsSnapshot: MessageFns<EntitlementsSnapshot> = {
16799
16964
 
16800
16965
  function createBaseSeatEntitlement(): SeatEntitlement {
16801
16966
  return {
16802
- billingParty: "",
16967
+ biller: "",
16803
16968
  accountId: "",
16804
16969
  principalId: "",
16805
16970
  principalName: "",
@@ -16819,8 +16984,8 @@ function createBaseSeatEntitlement(): SeatEntitlement {
16819
16984
 
16820
16985
  export const SeatEntitlement: MessageFns<SeatEntitlement> = {
16821
16986
  encode(message: SeatEntitlement, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
16822
- if (message.billingParty !== "") {
16823
- writer.uint32(10).string(message.billingParty);
16987
+ if (message.biller !== "") {
16988
+ writer.uint32(10).string(message.biller);
16824
16989
  }
16825
16990
  if (message.accountId !== "") {
16826
16991
  writer.uint32(18).string(message.accountId);
@@ -16885,7 +17050,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
16885
17050
  break;
16886
17051
  }
16887
17052
 
16888
- message.billingParty = reader.string();
17053
+ message.biller = reader.string();
16889
17054
  continue;
16890
17055
  }
16891
17056
  case 2: {
@@ -17014,11 +17179,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17014
17179
 
17015
17180
  fromJSON(object: any): SeatEntitlement {
17016
17181
  return {
17017
- billingParty: isSet(object.billingParty)
17018
- ? globalThis.String(object.billingParty)
17019
- : isSet(object.billing_party)
17020
- ? globalThis.String(object.billing_party)
17021
- : "",
17182
+ biller: isSet(object.biller) ? globalThis.String(object.biller) : "",
17022
17183
  accountId: isSet(object.accountId)
17023
17184
  ? globalThis.String(object.accountId)
17024
17185
  : isSet(object.account_id)
@@ -17092,8 +17253,8 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17092
17253
 
17093
17254
  toJSON(message: SeatEntitlement): unknown {
17094
17255
  const obj: any = {};
17095
- if (message.billingParty !== "") {
17096
- obj.billingParty = message.billingParty;
17256
+ if (message.biller !== "") {
17257
+ obj.biller = message.biller;
17097
17258
  }
17098
17259
  if (message.accountId !== "") {
17099
17260
  obj.accountId = message.accountId;
@@ -17145,7 +17306,7 @@ export const SeatEntitlement: MessageFns<SeatEntitlement> = {
17145
17306
  },
17146
17307
  fromPartial<I extends Exact<DeepPartial<SeatEntitlement>, I>>(object: I): SeatEntitlement {
17147
17308
  const message = createBaseSeatEntitlement();
17148
- message.billingParty = object.billingParty ?? "";
17309
+ message.biller = object.biller ?? "";
17149
17310
  message.accountId = object.accountId ?? "";
17150
17311
  message.principalId = object.principalId ?? "";
17151
17312
  message.principalName = object.principalName ?? "";
@@ -17388,11 +17549,11 @@ export interface AIGatewayService {
17388
17549
  * unverified, a complete snapshot re-derived each tick.
17389
17550
  */
17390
17551
  StreamFilesSummary(request: FilesSummaryRequest, metadata?: Metadata): Observable<FilesSummary>;
17391
- /** Latest observed list price per (source, provider, model) from the global catalog. */
17552
+ /** Latest observed list price per catalog listing from the global catalog, under stored names. */
17392
17553
  ListModelPrices(request: ListModelPricesRequest, metadata?: Metadata): Promise<ListModelPricesResponse>;
17393
17554
  /**
17394
17555
  * Every stored observation for the filtered models over a time range, oldest first —
17395
- * the rows ListModelPrices collapses. filter.model is required.
17556
+ * the rows ListModelPrices collapses. filter.model_raw is required.
17396
17557
  */
17397
17558
  ListModelPriceHistory(
17398
17559
  request: ListModelPriceHistoryRequest,
@@ -713,7 +713,7 @@ streamFilesSummary: {
713
713
  responseSerialize: serialize_gateway_web_v1_FilesSummary,
714
714
  responseDeserialize: deserialize_gateway_web_v1_FilesSummary,
715
715
  },
716
- // Latest observed list price per (source, provider, model) from the global catalog.
716
+ // Latest observed list price per catalog listing from the global catalog, under stored names.
717
717
  listModelPrices: {
718
718
  path: '/gateway.web.v1.AIGatewayService/ListModelPrices',
719
719
  requestStream: false,
@@ -726,7 +726,7 @@ listModelPrices: {
726
726
  responseDeserialize: deserialize_gateway_web_v1_ListModelPricesResponse,
727
727
  },
728
728
  // Every stored observation for the filtered models over a time range, oldest first —
729
- // the rows ListModelPrices collapses. filter.model is required.
729
+ // the rows ListModelPrices collapses. filter.model_raw is required.
730
730
  listModelPriceHistory: {
731
731
  path: '/gateway.web.v1.AIGatewayService/ListModelPriceHistory',
732
732
  requestStream: false,